You might expect that you could create a freestyle project as config.xml simply by writing <project/> and allowing all fields to be set to default values. Unfortunately you then get a NullPointerException from various places, such as Project.createTransientActions, which expect fields such as builders to have been set to non-null collections (as the constructor does).
This is annoying when trying to create jobs directly from XML, e.g. when using a templating system. Better to make fields default to the constructor’s value.