`git format-patch` and `git am` are great! Not all SCMs have something like that (many don't even have a diff format with enough information to reliably look up a file or apply all of its changes).
Having the whole state of a series of commits up-front can help with tools like ours that need that information ideally in one place and need to do analysis across multiple commits.
We also wanted to avoid issues where, due to a bug or network error or whatever, a missing patch in a sequence could result in a broken set of changes to apply. This is obvious when you're patching locally, but less so when you're sending to a tool to process later. Having it up-front reduces the chances of problems and simplifies a lot of edge cases.
Electricity and running water are great; alas, not all houses everywhere have them ...
Who cares?
The solution to SCMs not doing this and that is to implement ones which do. We have done that.
You can unlock the cage, and that is enough; if the apes want to stay, let them stay.
perhaps the solution is to stop using those SCMs?