Я не прогроммист но могу с уверенностью сказать что false возвращает потому что [] и [] два разных обьекта
Если ты сверяешь обьекты как экземпляры одного класса то будет true , если ты сверяешь обьекты фактом то они будут разными из-за адресации , если ты сверяешь обьекты по данным , например int16 и int32 то возратит true , структурно - false