A ModelBuilder (and its subclass DataSource) instance manages the models that are being handled by the same Connector instance which share the same connection or connection pool. It's the scope for automigrate/autoupdate too. 

In Java, I'm strongly against using a static singleton. The preferred way is to have a root object instance that create instances for the subsystems as singletons to make them manageable including lifecycle controls.