Except they do even with `set -e`. Especially if you forget to/can't set `pipefail` (which is bash-specific).
Or consider the last example from the wiki link above:
set -e
f() { local var=$(somecommand that fails); }
f # will not exit