It's a subtle point. See this paragraph in the bash manual page:
If there is a command name left after expansion, execution
proceeds as described below. Otherwise, the command exits. If
one of the expansions contained a command substitution, the exit
status of the command is the exit status of the last command
substitution performed. If there were no command substitutions,
the command exits with a status of zero.
In one of your examples, a "local" command is generated using a command
substitution, so the exit status is that of the local command. In the
other, only an assignment is done, which is not a command, so the exit
status is that of the last command substitution.
Dale