Another vote for the status quo based on David's second point: I like the fields declaration because it's simple to do dynamic forms created at runtime. Just create your list of widgets based on some whatever criteria applies, and then create your form. Yes, there's probably a way to do it with the class methodology as well, but not without mucking with the internals of the base class, and I'm not that clever, so I'll probably get it wrong a few times.
If you do decide to change to class style declaration, please provide a way to add widgets to the object after it is instantiated. SQLObject has "addColumn" and "delColumn", perhaps "addWidget" and "delWidget".

