I've read the docs and a few blog postings, but I still don't get what the "unpackaged" tag in an extension file name is for.
When would I use it and not use it?
If you had, say, a PostgreSQL 9.0 database using hstore, you would've loaded the hstore support by running the contrib's
It was a major pain to dump and reload such databases, and especially to upgrade the contrib to a new version.
When extensions were introduced, there was a need to be able to convert the "unpackaged" contrib, i.e one loaded from an sql script, into an extension that could be recognised by the system, versioned, and upgraded using the extension control system.
For more detail, see the documentation.