> making code overly DRY and wrong abstractions coupling unrelated parts of the system unnecessarily
I would say that's just bad engineering due to lack of insight or experience. DRY is the most simple and most dangerous principle (or "best-practice") of them all, because when it goes wrong it's the one that hurts the most.