Почему свойство length массива неперечисляемое, но метод .propertyIsEnumerable(length) возвращает true?
arr.propertyIsEnumerable(length)
// => true
Вы тут не свойство length проверяете, а свойство, чьё имя совпадает со значением переменной length - и что у вас в ней лежит, да хрен его знает. Может быть число, соответствующее какому-то индексу массива - тогда неудивительно, что получаете true.
UPD. Могу предположить, что за length там у вас - если вы сами её не объявляли, это window.length.
let arr = ['a', 'b', 'c'];
arr.propertyIsEnumerable('length'); // -> false
Выдыхаем, расходимся.