I believe you are wrong Ken
That's because int[] is not of object[] type, so the compiler assumes that the int[] is just one of arguments passed to the method.
here's how:
new Foobar[] { } is object[]; // true
new int[] { } is object[]; // false
update:
you can make the method generic to let the compiler know struct/object type passes as params:
void Foo(params T[] objs)
{
foreach (T o in objs)
Console.WriteLine(o.GetType());
}