zsh can't see and doesn't load the ~/.zshrc startup file
The issue turned out to be that .zshrc had a hidden .txt file extension. Somehow it was automatically named .zshrc.txt, probably when I used TextEdit to edit it, and source doesn't infer the text extension. Finder also doesn't display the .txt extension by default unless you inspect the file, so I hadn't noticed the issue.