My take on this is to keep it simple for CPython: Require the newer version of Sphinx on all branches we backport docs changes to.
We, the CPython project, determine the exact version(s) of Sphinx a documentation build for a given version of CPython requires. If Sphinx has unfortunately made a breaking change (as appears to be the case?), we should update our docs for all versions we backport doc changes to to use the most modern version (along with the docs themselves).
We should explicitly not care at all about people using external sphinx installs that are not fetched at the correct version via our Doc tree's Doc/requirements.txt.
That some distros want to use their own incompatible-version packaged version of sphinx to build our docs is on them to handle on their own. Not on the CPython project. That was never a guaranteed thing that would work. Until now, they merely got lucky. This is a docs build-time dependency with no impact on anything at runtime so we should be free to change versions as we see fit.
-gps