> I've also never been quite clear whether the github Jekyll is supposed to be run locally before push or is run automatically on their side.
Depends on the setup. In all setups you are going to want to be able to run the page locally in a watch mode. `jekyll serve --watch --drafts`. When it comes to deployment it differs a bit, if you use the approach outlined in my post the actual building of the page happens on Travis which pushes the generated site to s3. With Github pages it's all taken care of by Github when you push.
> also, what is S3 adding in your case? As far as I'm aware github.io sites are free, while AWS billing is not a hard limit and you're still liable for potentially huge charges if someone decides to DDOS you while you're away from a computer
When running Jekyll with Github pages there are limitations to what kind of plugins and gems you can use. However it's a perfectly valid approach. I have a billing alert set up at $5 on AWS and to a degree Cloudflare protects me from DDOS. Honestly though most of my pages are extremely lightweight and s3 is cheap enough that even millions of requests is not going to incur huge costs. All my static assets are cached by cloudflare as well.