zsh echo behaves the standard way, like bash in UnixUNIX mode. That is it expands \b to the ASCII BS character as the UnixUNIX specification requires.
Don't use echo to display arbitrary strings, use printf:
printf '%s\n' "$1" print -r -- "$1" also works but is ksh/zsh specific.
echo -E - "$1" work with zsh and I believe some BSDs.
cat << EOF $1 EOF works in any Bourne-like shell even those from a few decades when there was no printf command but it spawn a new process, and is really not necessary nowadays as we now have printf everywhere.
And by the way, you need to escape backslashes on a shell command line as it's special to the shell (every shell but rc), so:
$ foo '\\foo\bar' foo \\foo\bar would pass the "\foo\bar" string to foo which can't reinvent the lost backslash back.