OP here. On a hunch, even though my package is in a PUBLIC GitHub repo, I decided to log in to shinyapps.io and entered GitHub access credentials as if it were a private repo, as described here. This allowed the package build to work during Shiny app deployment.
I don't know if this would have happened with any public GitHub repo (because all other packages my Shiny app uses are on CRAN), but maybe it's a bug with accessing a public GitHub repo that you are also the owner of?