Because ~/.config already existed, stow made the zsh symlink inside it. If ~/.config hadn't existed, stow would have symlinked it from ~/dotfiles/zsh.
To remove the symlinks stow set up:
stow -D zsh
I did eventually set up a wrapper script to pass a few default arguments to stow, to ignore certain files I use for documentation. But stow does all of the work of managing the symlinks.
Dotfiles are stored in git, and run a script that creates symlinks to those dotfiles