AFAIK, DTrace avoids the problem by assigning a stability level to each probe. A script that only uses stable probes is in principle not going to break any time soon (although obviously it won't be able to do everything that one that doesn't thus restrict itself could do). One that uses unstable probes is pretty much at one's own risk in terms of future compatibility. As the particular utility of certain data is recognized, stable probes for that data can be added as an alternative to unstable probes that dig into implementation-dependent details.
Another example of the difference between _design_ and mere accretion.