Hi Nicklas, the ideal way as you know is to create the appropriate classes. You might want to consider training them or putting in a workflow so you can review before they are published.
Otherwise... If I were doing it outside of ezpublish, I would have the forms created based on the contents of an xml form which could be created by the client, using a form I would have created for that purpose.
The problem with that, is that its really complicated compared to the alternative.
A thought springs to mind while I write this... Can you create a new class group, and only give the client access to create/edit classes within that group? If so, you could then create custom templates etc and not have to be so worried about what they may inadvertently get access to? If you cant, that would be a suggestion to add to the next round of feature additions.
I think I may have something that will fit your needs. We have a extension that we have been planing on releasing as a product but are just too busy to polish it off and package it up. As a result it's likely we will release it under the GPL.
In it's current state it is quite usable, has some installation documentation, but lacks configuration and operational documentation.
If you are interested drop me an email @ brucem@designit.com.au.