In reply to tfitz:
A more basic reason to have separate uvm_object_utils and
uvm_component)utils macros is that the factory create methods need to be defined with a hard coded set of arguments for the constructors: a name for a uvm_object and a name and parent for uvm_component. This is why you cannot add constructor arguments to your own classes and still use the factory.