(I am not advising for any particular site or system in this answer - each specific system may have its own considerations)
I guess the reason is to prevent duplication and ease sorting or identification (it's easier if you do not need to consider multiple options). And possibly to maintain some consistency, as many web user interfaces are geared towards people that are likely to sometimes bother to capitalize correctly and otherwise not).
But then, those are a problems anyway because there is all too often more than one way to refer to something. If your tags are ever used as symbols in some sort of script, configuration, or code (e.g. mail filters, setting files, command lines), it's good to have some simple convention for specifing them, and if all symbols are of similar significance, allowing or distinguishing between different case variations, deliminations, etc. can be problematic. As a Unix user, I try to keep file names simple, short, lowercase, and without special characters, and moreso when they are (for example) mailbox names or source files - as they are likely to have to be typed, and specified in many contexts where doing otherwise will be inconvenient.
On the other hand, when using a sophisticated graphical or web-based interface which allows easy selection among a list, completion of typed entry, suggests closest matches, etc., it makes sense to allow some sort of mapping. Give each tag a short simple lowercase identifying name, but allow giving it also a "long" or "human" name, which will be shown where it makes sense. Tags can be uniquely identified and specified by their short name, but read more conveniently by their long name.
This is similar to how usernames work in many systems. I wouldn't choose a mixed-case username, and rather have usernames be treated case-insensitive (so I would just use the case that makes sense on the system I am in, which is lowercase in Unix but uppercase in some other old systems). Then, most systems have some other information stored about users, like their long or full name, which is nicer to read, and therefore many user interfaces (e.g. Windows XP, Mac OS, and I guess also some newer Unix desktop interfaces like GNOME and KDE) display on desktop login choosers, messages, etc.
In the case of tags for community systems on the web, I guess the solution to the duplication problem is some level of moderation to tags, even if just by the community itself, and the ability to rename and merge tags (unlike usernames in most cases) or edit their long names, in case something was mistagged.