consider the following:

namespace ConsoleApplication1
{
    using System;
    class Program
    {
        static void Main(string[] args)
        {
            new MyClass();
            Console.ReadKey();
        }
    }
    class MyClass
    {
        public MyClass()
        {
            Console.WriteLine("Hello, World!");
        }
    }
}


it's completely insane to do such a thing, but as evildictator pointed out, the compiler has no idea at new MyClass(); what that side effects that constructor has.
that's why new Object(); compiles and new Object[] { }; does not.
MyClass[] { }; has to be put somewhere because the initialization of an array requires several steps and again, just does nothing.
I suppose you could argue that new MyClass[] { new MyClass(), new MyClass() }; is valid because each constructor has a side effect, but before you can call those constructors you have to reserve some memory for the array, and since you did not specify where to store the pointer to that memory, it's just not allowed.