You're confusing the issue.
I'm not sure this can be explained in one message, but I'll try.
mIRC, like any programming language, has "special" characters that have syntactical meaning to how the language works.
The symbols you listed that mIRC "can't parse" are a list of those very special symbols. You cannot use those characters literally in your scripts. You must escape them. One way to escape a special character is to use $chr(N) where N is the ASCII value of the character. This is why I suggested using $chr(44) for the comma. Similarly, if you want to use a "#", you must use $chr(35).
Try it: //echo -a $chr(35) # $chr(44) ,
Note that , is a bad example above, since it only has special meaning inside an identifier (like $nick(#,N))
Now... going back to the important word I used above, literally: these characters are special characters only when they appear literally in your code. If they come from input like $1-, they are not literals, and are not treated specially.
When you said "I can't tell people to use $chr(44)" you were once again confused. You need not tell people to use $chr(44).
Try it: //tokenize 32 a , b , c | echo -a $remove($1-,$chr(44))
The above will remove all commas from the text. Note that you cannot use the literal "," in the $remove, you will confuse mIRC syntactically.
This means you can't directly tell mIRC to do: $replaceIt(,)
But you can use a , when taken from a %variable or $1-:
//var %x = , | echo -a $replaceIt(%x)
Basically, your alias works fine (I still recommend using a regex). You only think it's broken because you're testing it incorrectly.
Hope that clarifies the issue. There are no problems with reading character input in mIRC, it all depends how you do it.