Я думаю это сделано для использования различных порождающих шаблонов проектирования (
Порождающие шаблоны проектирования).
Для того чтобы такие объекты было удобнее создавать другим более высокоуровневые объектам, а не программистам. Точнее чтобы программистам было удобнее программировать эти высокоуровневые объекты на создание таких объектов. Ну вы поняли