forEach/map/... перебирают элементы массива. В твоём примере в массиве только один элемент под индексом 5. Вот если бы ты написал
arr = [];
arr[0] = undefined;
arr[1] = undefined;
// ...
arr[4] = undefined;
arr[5] = 'TEXT';
alert(
arr.reduce(function(a, n) {
return a + n;
}, '')
);
Всё логично, перебираются элементы массива, если элемента нет, то нет.