¿Por qué las matrices son covariantes pero los genéricos son invariantes?

De Effective Java de Joshua Bloch,

Las matrices se diferencian del tipo genérico en dos formas importantes. Las primeras matrices son covariantes. Los genéricos son invariantes.

Covariant simplemente significa que si X es un subtipo de Y, entonces X [] también será un subtipo de Y []. Las matrices son covariantes Como la cadena es el subtipo de Object So

String[] is subtype of Object[]

Invariante simplemente significa independientemente de que X sea subtipo de Y o no,

 List<X> will not be subType of List<Y>.

Mi pregunta es ¿por qué la decisión de hacer matrices covariantes en Java? Hay otras publicaciones de SO como¿Por qué los arreglos son invariantes, pero las listas son covariantes?, pero parecen estar enfocados en Scala y no puedo seguirlos.

Respuestas a la pregunta(8)

Su respuesta a la pregunta