AFAIK there's nothing stopping you from just spinning one up if you have the perms to the repo, although because of both your M1 and "untrusted code" reasons you'd likely want to put it in a virtual machine: https://docs.github.com/en/actions/hosting-your-own-runners/...
So many times it is not even 50, but 1 line. and those changes fail too.
Also, more hardware does not make builds faster magically all the times. one needs to spend time to actually use more/ better hardware.
Finally, build load comes in spikes. end of the working day, you have lots of builds all of a sudden. Few runners get overloaded in peak or many runners waste a lot of money. May be we need builds being done in some other timezones where its off-peak time, and even better, if people could pool their resources (and thats what SaaS runners do for us.)
One of my pet peeves at my last job was that the CI build and the local build commands were different, and produced notably different results sometimes.
I just finished some changes and they are in review. Now I have to pull master, and build that before I can start the next set of changes. (and if the review finds something I have to switch branches and rebuild a large part of the code)
Build servers are fine for the main branch, but why does a dev have to build the whole thing to quickly check the last 50 lines that they've written?