Without me turning into a conspiracy theorist and just being a computer scientist, in general terms you want to push the complexity of a system as far down the decision making point as possible. It is far more efficient for the exchange to have to keep track of these complexities, once, instead of every algo developer each time. The exchanges integrity is more likely to suffer less that way. Exchange programmers tend to be very good. Algo system builders less so.
Further, generally you want orders that are managed at the server - this reduces latency since you don't have to continuously cancel/replace orders increasing bandwidth needs, and of course it is more fault tolerant. So instead of canceling orders, you are canceling algorithms. Far more efficient, and the right level of abstraction.
There are lots of good reasons for many of these order types. I think very very few of these things were meant to be evil. A couple of them definitely are though and definitely don't make for a fair marketplace (which is the #1 poison to an exchange). The exchanges in their quest to compete, let those few slide. Wrong decision.