Regardless of the rest, this construct:
$ (echo foo) | tee ${myvar:=tmpfile}
is expected to set the var in zsh (and also real AT&T ksh) but not bash. That's because the right side of a pipe in bash is always in a subshell, while the left side of the pipe is in the subshell in ksh and zsh.
But yeah, I can see no reason why the assignment would be subshelled in a normal pipeless redirection from a subshell. Especially since the subshellless version works, meaning it isn't getting subsumed by the "set just for this command" behavior of bare assignments.