Почему массив равен не массиву?
Пустой массив преобразовывается в пустую строку. А та, в свою очередь - в false.
![] == false[] при сравнении становится true
Выходит что true != false
А вообще даже [1] == [1] выдаст false два разных объекта (в js массив тоже объект).