The actual reason is that if a train is too late, it will conflict too much with the other scheduled trains and there's simply no room for it. Keeping the delayed train will just cause more delays for other trains on the same route, because German trains are scheduled with very high frequency.
E.g. where I live in Cologne, there's typically a high speed train every 20 to 30 minutes to Frankfurt. If one train is delayed by 30 minutes, then suddenly you have two (ore more) trains right on top of eachother heading to the same destination, both on very very congested lines that theyre simultaneously trying to do repairs and expansions to.
Those are the sorts of situations where it makes sense to just cancel the train, not because of metrics but because of actual track constraints.
The main thing people dont understand about Germany's train system is the scale of it. The network is physically very large, but also very densely packed, and has very frequent trains.
For instance, here is the map just of the regional (non-high-speed) trains between cities in my state of Nordrhein-Westfalen: https://karteplan.com/deutschland/land/nordrhein-westfalen/s...
It looks more like a circuit board than a traditional transit map. That's why this problem is so hard to solve and will take a long time and a lot of investment before it improves.