Differences between substitution and rewriting?
There are three differences between substitutions and rewriting systems:


Substitutions happen one symbol at a time, while a rewrite rule can rewrite an entire substring at once.
Substitution is a single-valued function while in a rewriting system, several rewriting rules can apply to any given substring.
A substitution must specify what value is substituted for each symbol. Rewriting systems need not apply in all situations.


I would say that the first two are the major differences. You can define substitutions so that they are partial functions, and then the third difference doesn't apply.