Actually this might be possible in a neat and effective way which might not break existing code.
The fields are all in the database and the registration dbfield identifies if the field is displayed on the registration page or not. This dbfield is smallint(1) and it looks as if it could be used to designate each field on up to 9 different "registration pages".
Currently the registration dbfield can have a value of "0" which means the field is not on the registration page, and "1" which indicates the field is present on the registration page. - If the dbfield is anything else, "2" .. "9" the field is still displayed and handled as if it was just a normal field required at registration.
Now the "only", change would be the rendering and perhaps multiple input forms/pages that needed to be parsed in the right order for this to work.
And yes, the administrator panel for field definition would have to change to allow multiple values in the registration dbfield parameter.
Of course this is a "hack", but if it's done right, maybe it could become part of CB in the future, and it would NOT need special handling in other parts of the code than the actual registration page.
I need that feature myself, but I do agree with the core team, that the registration page has to be as short and simple as possible.
Guess I'l get cracking on this one and see if it can be done.
If any of the core team has comments - I'd appreciate to hear them. - Even the "you're a lunatic".