Почему после удаления элементов не изменяется длина массива?
delete не удаляет свойство, только значение
теперь ваш массивarr[undefined, undefined, undefined, undefined, undefined] длинной 5
length работает правильно лишь в том случае, когда все элементы проиндексированы строго от 0 до length-1,  так как length равен наибольшему целочисленному индексу и +1