That said, I have found runners to be unnecessarily difficult.
But Jenkins and its own quirks, and when I used GitLab, it used ancient docker-machine and outdated AMIs by default.
I think Buildkite has been the only one to make this easy and scalable. But it is meant for self hosted runners.
[1] https://docs.github.com/en/enterprise-cloud@latest/actions/h...