The thing is, if you were to write, say, a /msg alias, then you cannot use /msg, or .msg, in order to send the text, at least so long as recursion is allowed. For example, you might have something to change the way messages look when sent, like:
alias msg {
echo -ta ( $+ $me $+ -> $+ $1 $+ ) $2-
.msg $1 $2-
}
That would be an infinite loop if recursion is allowed, and might go unnoticed in a more complicated alias. Anyone with something like that would have to go through to replace that command with /raw privmsg, !msg, etc instead, which is just extra work. On the other hand, if you happen to need recursion in an alias for a chat program, which i imagine would have to be relatively rare, the two-alias method is fine, and leaving things the way they are won't break anything.
P.S. If you need efficiency, why are you writing it in mirc script to begin with?