Потому что Collider2D наследуется от Object, у которого есть
оператор конвертации в bool. Практически все юнитёвые сущности можно не сравнивать с null, а просто вставлять в условие, например,
if(transform)
. Связано появление этого оператора с тем, что объекты живут не только в шарповом коде, но и в плюсовой части движка. То есть в шарпе объект может быть не null, а в плюсовой части уже уничтожился, и наоборот. Но это было актуально пару лет назад, с тех пор они бэкэнд переписывали и проблем с этим я уже давно не наблюдал, считайте, что это просто остатки легаси кода. Ещё иногда про это спрашивают на собеседованиях, но это скорее мусорные знания, дизайн так себе.