Generally a positive, there are drawbacks related to maintenance, but that's a problem for any system.
Say you're tagging hundreds of academic papers, so you have top-level tags math, physics, computer-science, graphics, machine-learning. Each of these has many subfields, and there is significant overlap between many of those. Perhaps more importantly, there is unpredictable future overlap, so it is generally impossible to define mutually exclusive categories (i.e. conventional directories [not counting links]) that are future-proof. I like to be able to define each hierarchy separately, then freely apply tags from any hierarchy to any item.
That's just one group of related hierarchies, and other categories of items (mutually exclusive categories DO exist, with care they can be suitable for very high-level organization) will have similar groups, which may or may not overlap with the top-level tags listed above.
I would love to see a GUI file browser designed with tags as a first-class concept. You might just call them "dynamic folders" - in any folder you can view a list of dynamic folders, generated by the tags in the current folder. This dynamic folder list could be adjusted from 1) only the top levels of the local tag hierarchy, down to N) all unique tags that are present in the current folder.
Not GP, but I'd definitely call that a positive! That's one of my issues with single-inheritance OOP too... There are many hierarchies you might want depending on the aspects you're interested in.
"A glass of juice is certainly a drink, but it is also a source of nutrition -- but not every drink is. There's not much nutrition in a glass of water. Likewise, there are many sources of nutrition which are not drinks. [...] A cup of tea is technically a source of energy (it is hot, it contains thermal energy), but so is a battery. Do they have a common base class?"[1]
(I remember a better example using soft drinks, but I couldn't find it with a quick google)