I think I figured out what was wrong. The doom script was defaulting to running an x86 version of Emacs, but there was an arm64 version alongside it in my installation:
(mlenv) gregs-newbook:~ greg$ ls -l /Applications/Emacs_27.app/Contents/MacOS | head
total 145776
-rwxrwxrwx@ 1 greg admin 3408 Mar 27 2021 Emacs
-rwxrwxrwx@ 1 greg admin 7170624 Mar 27 2021 Emacs-arm64-11_2
-rwxrwxrwx@ 1 greg admin 15488160 Mar 27 2021 Emacs-arm64-11_2.pdmp
-rwxrwxrwx@ 1 greg admin 9209536 Mar 27 2021 Emacs-x86_64-10_11
-rwxrwxrwx@ 1 greg admin 15483720 Mar 27 2021 Emacs-x86_64-10_11.pdmp
-rwxrwxrwx@ 1 greg admin 7337760 Mar 27 2021 Emacs-x86_64-10_14
-rwxrwxrwx@ 1 greg admin 15483960 Mar 27 2021 Emacs-x86_64-10_14.pdmp
-rwxrwxrwx@ 1 greg admin 15483720 Mar 27 2021 Emacs.pdmp
lrwxrwxrwx 1 greg admin 16 Mar 27 2021 bin -> bin-x86_64-10_11
(mlenv) gregs-newbook:~ greg$
By guessing at the meaning of the advanced bash shell scripting going on in doom , I figured I could use the arm64 executable by setting the EMACS env var to point to it. Once i did that, doom doctor and doom sync ran as expected, no more problems.