Нетехническая причина также может быть следующей:
Если вы объявляете локальную переменную, вы делаете это для ее использования. И использование связано с присвоением значения. Следовательно, доступ к объявленной, но не инициализированной переменной не имеет особого смысла - программист мог просто забыть инициализировать переменную.
Поля, однако, могут использоваться только до или после указанной точки в жизни объекта. Заставлять программиста инициализировать их все не будет хорошо.