It is common for a single style/type of railing to have multiple types of railing extensions and terminations. It may mount to the wall at the top but to the floor at the bottom. It may have a 12" extension at the top but wrap around a wall in a way that needs to be custom drawn at the bottom.
Currently, railing extensions are type-based within the Handrail Type family and the Handrail Type parameter is type-based within the Railing family. So you end up with at least 4 Handrail Types: no extensions, top extensions, bottom extensions, and top and bottom extensions, AND the corresponding 4 Railing types + 1 with no handrail. If you make a change to the balusters or rail structure of one type, it is very difficult to keep 5+ types matched.
I would suggest that handrails and railing terminations should also be instance-based, for similar reasons. If you start to add complexities of railing terminations into the mix with railing extensions, your types for what is essentially the same railing (in terms of rail structure and balusters) may double.