My guess is that it may be because I use nested subdirectories
I have confirmed this is indeed the issue. I moved all the images out of subdirectories and into the images folder. The itch zip now has a saner structure:
% zip -sf gimme-friction-baby-playdate_1.1.3.zip
Archive contains:
gimme-friction-baby_1.1.3.pdx/
gimme-friction-baby_1.1.3.pdx/images/
gimme-friction-baby_1.1.3.pdx/fonts/
gimme-friction-baby_1.1.3.pdx/sound/
gimme-friction-baby_1.1.3.pdx/main.pdz
And this zip correctly installs! Yay! So the solution is just don't use subdirs! Or wait until Panic fixes their zip library or Itch fixes their zip writer. Thanks everyone for your help especially @SHiLLySiT as your comment led me down the correct thought process, so many thanks!