Por que o método push é significativamente mais lento do que colocar valores por meio de índices de matriz em Javascript

Eu não entendo por que esse teste:

http://jsperf.com/push-method-vs-setting-via-key

Mostra que

 a.push(Math.random());

é dez vezes mais lento que

 a[i] = Math.random();

Você poderia explicar por que esse é o caso? Que mágica "push" faz com que seja tão lento? (ou mais lento se comparado a outro método válido de fazer isso).

EDITAR

NOTA: O teste de pressão é tendencioso. Eu aumento o tamanho da matriz a cada iteração! Leia a resposta cuidadosamente aceita!

questionAnswers(3)

yourAnswerToTheQuestion