That looks very clean, and clever! I like the way that it appears as just another plugin, and shows whether it loaded or not.
I guess there isn't any problem with name spaces, because each of these will live in their own libXXX and only brought in when imported? The only issue related to all of these changes is:
I was going to put the type/directory in that tree list in the Load Plugins dialog, but it appears that there is a dictionary that uses the filename (not path) to lookup bits about the file. I think that this currently means that two plugins can't have the same name, even though they are in different subdirectories.
On a related note, when I split up DefaultGramplets into their own files, I'm wondering if I should name them *Gramplet.py? For example, should the DataEntry Gramplet be: DataEntry.py or DataEntryGramplet.py?