Simple answer: Because Py-ParametricTools got updated shortly before the release of R23 to be compatible.
And a long one:
You may have heard about the Scene Nodes (recently) and especially the new core (for some years now). Users are waiting for quite a while for such improvements and Maxon obviously seems to have developed larger parts under the hood during last years. Yet, from what we know by now (e.g. scene nodes rather disconnected from the C4D we know), C4D will probably be transitioned inside out into the new world part by part. And while C4D for many years was an extraordinary example of back- and upward compatibility (plugins developed for R13 will with very few exceptions run in R19 as well), it’s more or less inevitable, such massive changes require changes in plugins making use of them (e.g. a module used by a plugin got replaced by a completely different one). Inevitable at least if Maxon would like to eradicate problems they may have introduced in the past. And after all that’s the main motivation for such a rebuild, isn’t it?.
For plugins written in Python this was so far relatively easy and quick. R23 now changed (in accordance with VFX reference platform) from Python 2 to Python 3, causing maybe some more work on this side as well.
For plugins written in C++ it is way more complicated and I don’t want to go into too much technical detail, but currently it indeed needs at least a new compile of a plugin more or less for every major version of C4D.
Not a nice situation, as you will need a new plugin release with every version (maybe imposing additional cost for the plugin update…). Neither for the plugin developer nor for the user.
Yet, it’s technically more or less inevitable.
I am pretty sure though, judging from C4D’s history, Maxon will eventually settle with an equally stable plugin interface, and those golden years of compatibility will return. Also lets not forget, some other DCCs around have never had a single phase of long term plugin compatibility.