I fully understand how undos can be useful and I feel your pain too.
There is just one tiny problem. Undos are very hard to program as they add an extra layer of complexity. It is a bit like multiplying by 2 the complexity of the interface. Maybe not quite 2x but a lot. You can't imagine the number of bugs we corrected in HexRoller (because of the undo added complexity) to get things right in the end. For that game, it was more like 3x, 4x actually.