Nesse caso a declaração foi feita com o <= ou seja, ela acabou pegando também a posição igual ao último índice e nesse caso fez o código passar 5 vezes.
var letras = ['A', 'B', 'C', 'D'];
for( var i = 0; i <= letras.length; i++ ) {
alert(letras[i]);
}
corrigindo:
for( var i = 0; i < letras.length; i++ ) {
alert(letras[i]);
}