читайте справку от истоков
Если вкратце, то при операции сравнения(первая ваша строчка), оба операнда приводятся к числу, и равны оба нулю
в условии же массив приводится к булевому, и становится истиной согласно правилам приведения типа
в таком же варианте, сравнение уже false, так как массив приводится не к нулю, а единице, хотя он также истинен самостоятельно
alert([1] == false);
alert([1] == 1);
if ([1])
alert(true);