There are a couple of reasons why I wrote the 'register_plugin' in Spyder's plugins interface:
* the 'register_plugin' method is doing more than a constructor should do: it registers the plugin to Spyder's main window (connecting signals, ...) -- I tend to avoid constructor methods that do everything: it's less readable
* separating this method from the constructor also has the advantage of making it easier to change the code structure in the future
* there is another reason/motivation for this, but I can't remember it -- my guess is that was at some point essential to create this method but the situation changed and now it's not as needed as it was (except for the reasons above)