¿Por qué no es [SomeStruct] convertible a [Any]?

Considera lo siguiente:

struct SomeStruct {}

var foo: Any!
let bar: SomeStruct = SomeStruct()

foo = bar // Compiles as expected

var fooArray: [Any] = []
let barArray: [SomeStruct] = []

fooArray = barArray // Does not compile; Cannot assign value of type '[SomeStruct]' to type '[Any]'

He estado tratando de encontrar la lógica detrás de esto, pero sin suerte. Vale la pena mencionar que si cambia la estructura a una clase, funciona perfectamente.

Siempre se puede agregar una solución alternativa y asignar cada objeto de fooArray y convertirlos en el tipo de Any, pero ese no es el problema aquí. Estoy buscando una explicación de por qué esto se comporta como es.

¿Puede alguien por favor explicar esto?

Esta pregunta SO me llevó a este problema.