Потому что без такой инициализации невозможно:
1) Передать параметры в базовые классы
2) Инициализировать константы.
3) Иметь поля, для которых нет умолчательного конструктора
Если с первым вроде как понятненько, то второе требует уточнений. Без такой инициализации, все поля в классе должны сперва создастся при помощи умолчательного конструктора, а потом еще раз инициализироваться уже в теле конструктора. Это двойная работа, что нехорошо.
Кроме того, для полей, у которых нет умолчательного конструктора, в таком случае, выходит что нет способа их адекватно создавать не на куче.