Why does WP_Query strip colons from tag names?

The tag parameter should be the tag’s slug. If you look at your tag’s archive URL (the view link when editing the tag), it won’t have the colon in it, because that’s not a legal character in a URL.

Your tag’s name can still have the colon, and you can use the URLencoded version of a colon %3A in the slug if you want, though you will have to manually enter that in the slug field.