in sh(1) because the code in `...' may or may not be executed in a subshell depending upon the shell's implementation, and therefore can't modify the state (including variables) of the current shell.
Looks like POSIX prescribes execution of $(...) and `...` in a subshell:# The shell shall expand the command substitution by executing command in a subshell environment
-- denis