Why Isn’t My WP_Nav_Menu returning false?

it doesn’t return false because the menu exists in every case, you’re just unsetting all of the menu items. you’re not setting an items_wrap arg, so that defaults to the ul wrapper. maybe try removing it by setting it explicitly to just the child items:

'items_wrap' => '%3$s'

note, you’ll then have to manually wrap your menu in ul tags in that case.