@jsreynaud: Yes you are correct! However I personally think that it is more obvious to instantiate in the init function since this is the entry function. Otherwise the register() call might be too well hidden amongst all of the additional .py files.
I worked on the KiCad integration. Now there is a mostly functional fancy dialog, when you run the plugin from Pcbnew.
The generation of vias in Pcbnew is however still missing. I am unsure whether I should wait until the connectivity algorithm is merged into the master and then use free via placement instead of placing modules with pads inside.
What I also plan to do is to "filter" the generated Vias. I.e. test if they collide with a different net or test whether they are located within a zone of a specific net and remove the corresponding vias.