Note that your code example seems rather "double". The plug-ins retrieved with
pyblish.api.discover() can already be found so there's technically no need to register them explicitly. Or what's your intended use case?
If you intend to "customize" what plug-ins are to be run than you wouldn't need to register them but just pass them on yourself to the next methods that process the plug-ins. For example:
plugins = pyblish.api.discover()
plugins_to_use = pyblish.api.plugins_by_family(plugins, 'model')
This way you take full control over how publishing is done (and with which plug-ins).
Regarding the error it describes that you should not be passing initialized classes, but instead the class type itself. So, in code that is not
Plugin. Though the example code you posted is not giving errors on my end, because
discover() should return them as the class itself.
What happens when you