Logically speaking then, there are two kinds of tags: ones used to mark a unique state, and ones used to label features of states.  We might call the latter "labels" if we wanted to distinguish them.  Since the former use is quite common, I would suggest requiring a flag when the later use is desired, and kicking back an error when a double tag is created without that option.  I would also suggest some feedback: "creating tag XXX (number 4; 3 other commits also have tag XXX)"

I do understand that unique tags do not play very well with distributed repos and syncs.  But warnings generated at sync time, or some other feedback, might catch some subtle errors which would otherwise slip through.