Here's my ideas. All of which have draw backs and positives.
So I'm leaning towards going with Type B... unless you folks have any suggestion. Yes it will be a bit more work on the front-end, but it will pay of in terms of calculations and scheduling.
Here's the families:
If I understand what you're asking, you want to be able to control the length of the pendant hanging down?
This looks really over-complicated. I editted a manufacturer's family to have a Pendant Drop parameter which controlled a dimension to move the entire head up and down, if the light source is Locked to the appropriate surface, you're lighting calculations will always work. I just used model lines, or you could use an extrusion. And I didn't have any nested families, or have to place 2 different ones.
But what happens when you're on a sloped ceiling? If your family is Face Based, your fixture will tilt incorrectly.
For the example I mentioned, that light was on a sloped ceiling so I had to place a reference plane, I named it, and hosted the light to the reference plane. This particular project, the architectural model had ceiling based fixtures in it, so they cut the ceiling, which made it really hard for me to place my lights, because of the hole in the ceiling, they kept hosting to the floor and they wouldn't stay hosted to the ceiling. So I used reference planes instead.
My pendant lights come in level while hosted on a sloped ceiling. See below. Otherwise, are you opposed to Reference Planes? The more hoops you jump through, the more likely it is that you'll trip up. Or the people following you will. Believe me, I know...
Under Family Category and Parameters, check the box for 'Always Vertical'. I have defined the pendant lengths to be calculated based off the manually inputted "lowest pendant length" and the inputted "ceiling slope ratio" parameters.