Потому что если not напоролся на non-null, то на выходе будет false. И он не разбирается, Boolean это или нет, и что внутри этого Boolean’а. Это для нас непонятно лишь потому, что мы привыкли, что Java делает неявный unboxing если встречает выражение !Boolean.FALSE