I'm not sure I like adding a mandatory requirement on reflection. How prevalent is reflection in peoples' installs? Could it be done using an assoc array perhaps instead of constructor params?
It seems like the API here doesn't allow for recursive elements. It would be nice to have groups be just another element type which happens to hold other elements.
It looks like the setValues() implementation makes this far less extendable than HTML_QuickForm. As far as I can see only element names which are arrays would work in sub-elements. See the element types I've added to FormBuilder for the types that I'd like to be able to create (subForm and elementTable).
Use a static private for the errors rather than a global. Or use a static within a function to hide it from, say, print_r.
Support for constant element values, as in QuickForm, would be nice.
I don't understand quite why you're using class constants for the names of the interfaces and file names. I suggest using just the strings.
There may be other things as well, but I don't have time to look closer right now, this is a very large package.