All I'm saying is pure guess, but it doesn't fit as a comment so I'm posting it as an answer anyway:
- I can reproduce your issue with VS 2012 and .Net 3.5.
- I can't reproduce it with VS 2010, .Net 3.5 and identical code.
So the difference is really the compiler version.
As the name of the class and the namespace are important, I'm assuming it's a hardcoded rule that has been introduced in the compiler of VS 2012+, to support implicit conversion of the new types/interfaces introduced with .Net 4.5.
So I'm guessing it's another black magic trick with arrays. See for example this Hans Passant answer:
Both the compiler and the CLR have special knowledge of array types, just as they do of value types. The compiler sees your attempt at casting to IList<> and says "okay, I know how to do that!".