Por que as matrizes são covariantes, mas os genéricos são invariantes?

De Java eficaz por Joshua Bloch,

As matrizes diferem do tipo genérico de duas maneiras importantes. Os primeiros arrays são covariantes. Os genéricos são invariantes.

Covariant significa simplesmente que se X é um subtipo de Y, então X [] também será um sub-tipo de Y []. Matrizes são covariantes Como string é o subtipo de Object So

String[] is subtype of Object[]

Invariante significa simplesmente que, independentemente de X ser um subtipo de Y ou não,

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

Minha pergunta é por que a decisão de fazer matrizes covariant em Java? Existem outras mensagens SO, comoPor que as matrizes são invariantes, mas as listas são covariantes?, mas eles parecem estar focados em Scala e eu não sou capaz de seguir.

questionAnswers(8)

yourAnswerToTheQuestion