I was told, but cannot recall by whom, that the csh
decision to use % when the bourne shell had $ was to make it clear which syntax was
expected by the user. tcsh inherited from csh. Bash/Zsh/Ash/Ksh inherited from sh.
I don't buy it. CSH predates the Bourne shell by a year. I suspect it used %
because the V6 shell it replaced used %.