да, в массиве не должно быть прерываний иначе итерации провалятся, в этом и суть проверки на массивоподобность. ваш кэп
к примеру
arr = [];
arr.length = 100;
тоже не считается массивоподобным я осознанно это сделал хотя мог бы проверять чисто (item.length-1 in item)