Is there a middle way between ad-hoc tagging and controlled metadata vocabularies?
Yes, there is.
Tags can be associated with URIs, making them globally unambiguous identifiers. So e.g. there's a tag:
http://del.icio.us/tag/photography
Which means "photography" according to del.icio.us. This may or may not mean the same as :
http://dannyayers.com/tag/photography
Which means "photography" according to me.
Relationships between tags (equivalence, subsets etc) can be expressed in the Semantic Web languages of RDF and OWL, in particular using the
SKOS vocabulary and/or the
Tag Ontology.