There could be overlap, yes. Raygun could probably shed some light on this, i think it was discussed before.
Modules was added so scripts could be shared across layouts. For example, the conveyor.nut module allows different layouts to create grid/conveyor layouts for artwork.
Plugins do get their own config and are automatically added to the plugins menu to be enabled/disabled by the end user. They are automatically available (but disabled by default). Modules are loaded on demand by a layout if that layout wants to make use of the modules functionality.
If you are doing something that could help enhance others layouts as well as your own, create a module. If it's something that will enhance the FE experience regardless of layout, use a plugin. If it's only something specific to your layout, then you can use fe.do_nut(). It just depends on what you are looking to do, really.