I find that different systems that implement tagging use different underlying methodologies. For instance, when using del.icio.us tags, they are pretty darn freeform. On the other hand, when using iPhoto tags, you have to go into a configuration screen, define all possible tags first, then apply those predefined tags to photos.
The way I see it, people use tags in two different ways. The first is the shotgun approach. When tagging, you use every possible keyword, no matter how silly or small, to tag the item. The second is a more conservative categorical approach. When tagging, you have a core set of tags you reuse and try to fit every item into one or more of those tags, but very rarely create new ones on the fly. I can see how each has advantages and disadvantages. I have been primarily in the latter camp (rarely creating new tags, usually reusing existing ones), but am experimenting with being a bit more haphazard with tags.
One problem I am running across is iPhoto. I store all of my photos in iPhoto, then synchronize that with Flickr and Gallery. iPhoto has a pretty crappy tagging system. Not only is it constrictive with tags in that you have to predefine them, but the actual tagging process is a little awkward, requiring you to highlight photos, bring up properties, and go to a different tab on the popup palette. Fortunately, iPhoto 6 has improved this slightly by displaying tags in two columns (v5 and below required you to scroll a list in a non-resizable popup palette.) It still sort of sucks.
I have been eyeing Aperture and noticed in Apple's gallery of it, there is a nice little panel that looks like you can add and remove arbitrary keywords. I'd link to the image, but it appears to be embedded in a Flash file. I'm not sure I am ready to make the iPhoto to Aperture step. This is mostly because of cost, but also because I have no idea if they keywords are any easier/better and do not know how Aperture stores its data (is it binary data mirrored in XML like the other iApps?) because I would have to rewrite my synchronization scripts and don't relish having to reverse engineer binary data files that are not guaranteed to stay the same format in the future.
Anyway, please give me your thoughts on tagging (and on Aperture in the comments, if you have used it)…