The idea seems interesting as it allows installing plugins (or modules) by simply downloading them to a specific directory (/usr/share/perl/something or ~/.perl_modules). However, I don't like the idea of scanning all tgz files in these directories at runtime as it seems to would kill startup time.
I think the application should scan plugin directories for plugin names to build a hash of available plugins. Later, when a plugin is actually needed, the xml or whatever file would be located, dependencies are checked and files are loaded. Runtime errors (or warnings) can occur if necessary.
Following this track, I think the file names could also contain an optional version number because an application may require a specific version of a plugin.
Could plugins or modules conflict with one another? If they can, then you may be on your way to a more sophesticated mechanism for implementing packaging (it might look like deb or rpm).
Dunno what others think about this and I hope I didn't miss an important point.