Обычно такие "штуки" делают не для "обычных" конструкторов объектов, а для сложных классов. Например, в C# initialize используются в конструкторах GUI-шных компонентов, если вы, например, их расширяете. В этом случае требуется установка многих значений по умолчанию, смысл которых иногда не ясен, да и пока не важен (особенно, когда нужно хоть как-то запустить для примера). Но если вы пишите свои собственные классы, то с вероятностью 99% вы напишите свой инициализатор и валидатор, если он вам вообще понадобится. Так что принципиальной разницы в листингах в вашем примере нет. Результат же получен одинаковый? Просто разными способами.