Для чего объявлять (создавать) имена полей в начале класса если они же по сути объявляются (создаются) в конструкторе?
чтобы в редакторе кода, когда вы набираете 
$object->|
он мог вам подсказать какие свойства есть у объекта.
чтобы явно указать видимость свойств (например, протектед)
чтобы потом не искать какие свойства есть у объекта через год, шарясь по всем его методам.
чтобы у вас не отвалилось все к чертям, если вы перепишите конструктор в классе-потомке.
Зачем мыть руки перед едой, ведь и из грязных ложка не выпадет?
Пхп - язык с плохой наследственностью. И эта "возможность" - один из рудиментов оставшихся с тех времён, когда язык писался в памперсы.
Но на самом деле все переменные надо объявлять перед использованием