Если второй кусок кода переписать так, чтобы он работал, то в нем у вас свойство age по умолчанию равно NULL, пока вы его не определите у вновь созданного объекта. А в первом куске кода оно по умолчанию равно 18 у всех создаваемых объектов этого класса.
В первом случае значение присвоено по умолчанию всем новым объектам класса. (так обычно не делают)
Во втором случае используется прямое присваивание. (так тоже обычно не делают)