while RegisterCustomGuiPlugin could be called in all your plugins, the issue is that you will have a message in the console indicating that the id is already used / in conflict.
So you can check, as you stated, if the library is already installed with IsLibraryInstalled or using FindPlugin and only register and install the library if you find nothing.
The load order here should not be a problem as all modules should be loaded before you need to call anything related to the UI.
Hi Daniel, thanks for sharing your further considerations.
I see your points and maybe we should consider to update our documentation to reflect the notes above. I will discuss with the team and maybe we could come with a better introduction where the "plugin" term is used in a less generic meaning.