Yeah, Matt is right about the "providers"...they are nice and can be switched out for your own...I am doing it right now with the Membership provider.
See with my situation, we have different customers who wanted different registration forms (some with custom fields and some without), so the "dynamic" form solution was the way I had to go.
But if you are just going to have one site with one registration form, then Matt's solution might be better for you.
But I was thinking about it last night...If you only need to add new "Profile" fields, then there is really no reason why you need to touch the UserController. the Profile fields are contained in the "ProfilePropertyDefinition" table. You might be able to add a new row in that table with the new field that you need. Then, I know, in the profile controller there is are methods that ae "GetPropertyValue" and "SetPropertyValue" which you can pass in the property Key name and get what you need. I had to use it for the core "Biography" field...It was missing from the ProfileInfo class (not sure if it is still missing) and it worked just fine.
That should take care of your profile problem without to much problem...This is just a theory though...I haven't tried this way myself...The method calls are there, but whether or not you can add a new row in the profile definition table simply is the theory part :-)
Let me know if you have any questions.