The question is somewhat confusing, as the question has nothing to do with LINQ, nothing to do with generic variance, and features a collection initializer, as well as an object initializer. The real question is, as far as I can tell "why is it not legal to use a collection initializer outside of an object creation expression?"
The relevant design principle here is that in general, we want operations that create and initialize objects to have the word "new" in them somewhere as a signal to the reader that there is an object creation happening here. (Yes, there are a few exceptions to this rule in C#. As an exercise to the reader, see if you can name them all.)
Doing things your way makes it harder to reason about the code. Quick, what does this do?
d = new List<int>() { 10, 20, 30 };
d = { 40, 50, 60 };
Does the second line append 40, 50, 60 to the existing list? Or does it replace the old list with a new one? There's no "new" in there, so does the reader have an expectation that a new object has been created?
When you say
q = new Whatever() { MyList = { 40, 50, 60 } };
that doesn't create a new list; it appends 40, 50, 60 to an existing list allocated by the constructor. Your proposed syntax is therefore ambiguous and confusing as to whether a new list is created or not.
The proposed feature is both confusing and unnecessary, so it's unlikely to be implemented any time soon.
new
operator. I suspect that the first example works as it is a special case and the compiler is more relaxed about what constitutes an expression syntactically. The benefit of the relaxed rules is terser syntax which is highly desirable for the context of object initializer syntax, it would look fugly otherwise. – Bliss