En JavaScript [] == 0 devuelve verdadero, como se esperaba. Pero Boolean([]) también devuelve verdadero.
Esperaría que devuelva falso, ya que == 0 comprueba si es falso.
Es simplemente cómo se implementa la función Boolean() .
Si observa la documentación de MDN para la Boolean() , encontrará esto (énfasis mío)
El valor pasado como primer parámetro se convierte en un valor booleano, si es necesario. Si el valor se omite o es 0, -0, nulo, falso, NaN, indefinido o la cadena vacía (""), el objeto tiene un valor inicial falso. Todos los demás valores, incluido cualquier objeto, una matriz vacía ([]) o la cadena "falso", crean un objeto con un valor inicial de verdadero.