Специальное значение NULL представляет переменную без значения.
NULL - это понятие переменной, которая не была задана никаким конкретным значением. Ошибочно ошибаться при дифференциации значений NULL и пустых 1.
private $foo = null; в точности эквивалентен private $foo;. В обоих случаях атрибут класса определяется со значением NULL.
isset будет правильно возвращать false для обеих объявлений $foo; isset является булевым, противоположным is_null, и эти значения, как указано выше, NULL.
Для справки рекомендую просмотреть таблицы сравнения типов PHP.
1: В этом случае я имею в виду типизированные значения, которые возвращают true для функции empty или которые иначе считаются "ложными". И.Е. NULL, 0, false, пустой массив (array()) и пустая строка (''). '0' также технически пуст, хотя я считаю, что это странность PHP как языка.