That does look like it raises covariance versus contravariance issues.
Here is why: an array is actually a function which maps an integer index to a value.
The element type of an array therefore a return value type of this function.
A "function returning SUP" is not a supertype of "function returning SUB".