Diferença entre os tipos Lista e Matriz no Kotlin

Qual é a diferença entreList eArray tipos?
Parece que pode fazer as mesmas operações com eles (loops, expressão de filtro, etc.), existe alguma diferença de comportamento ou uso?

val names1 = listOf("Joe","Ben","Thomas")
val names2 = arrayOf("Joe","Ben","Thomas")

for (name in names1)
    println(name)
for (name in names2)
    println(name)

questionAnswers(3)

yourAnswerToTheQuestion