This is a consequence of the fundamentally flawed particle design where
hair and particle settings are mixed in the same datablock.
When switching the type in ParticleSettings all instances (users of
that settings block) would have to be updated properly.
This is not feasible due to messy particle code, so the next best
solution (and a step towards clean design) is to disallow changing the
type of particle settings. The type is defined once when creating the
settings and never touched again, effectively making 2 types of particle
settings for particles and for hair.
This is not really a limitation, since particle settings are just linked
to the respective particle systems. This means to change the particle
type one can simply swap out the ParticleSettings datablock.
The only downside is that settings have to be copied or readjusted when
selecting another datablock, but since many settings are not comparable
between particles and hair anyway this is not a serious issue.
When using the operators for adding new particle systems or settings
there is now a menu popup to select the actual type of particles.