I don't think there's a unifying principle and it should be based on usage.
Example of a good general tag - argues for general tags
I follow the very general tag sql. Its a top 15 tag with 80K questions and its got 11K followers. Even though it crosses many technologies you can effectively answers questions across all of them. People have requested that you shouldn't even be able to have this tag with specifying the RDMS and has been rejected.
Example of a bad general tag - argues for a specific tag
vb is such an overloaded term that it needed to be banned because people writing VB.NET code didn't want to answer Excel macro questions.
Examples of good general tags that don't really work by themselves - also argues for a general tag
Even though tags should be useful by themselves general tags string, array, xml, multithreading (all top 40 tags) really aren't. Instead these general tag are extremely useful for people who love to answer c# or java and string, but don't really want to answer c# and nhibernate. I also don't think anyone wants string-c#, string-java, string-pascal etc..
If we try to apply one reasoning for or against general tags to the wrong case we end up with a sub-optimal solution.
Based on actual usage I think we should have multidimensional-array (3K questions) and olap (423 questions). The combination of database and multidimensional (3 questions) isn't really used and whoever brought that up was not being very helpful.