All you say are plausible scenarios. But there is also another one: the developers were simply not very good at writing code - neither diligent, thorough, or aware of good practices. Or they simply didn't care about the bugs or errors even if they knew about them. They never had to suffer the consequences.