I think that maybe your users belong in plain vanilla Access. Especially if they need to define field types or what have you.
Normally, you set this stuff up for users, because it's assumed that you understand the best way to do this from the system's perspective. You would be able to protect the user from creating a sluggish monster...or an irretrievable mess...and would come up with a system that is maintainable, expandable, integratable. That's why programmers command such love & respect, fantastic salaries, and other perks...
...but, if I were going to cheat a little, I'd set up a dummy table for the users, with, say, 15 fields (Field1,Field2, etc.) plus some key. Then I'd have another table to contain the user-defined field titles (F1_Title, F2_Title, etc). If you linked the two together, the user could always request their "title" for a field, and you could always print things to look like they'd expect. They'd never know that you were in control.