I am quite sure that, it is not a bug, but bad design. The ps was designed, that every order is paid during checkout. As well they are kind of expecting, that an order doesn't get changed.
I know, that my answer isn't really helpful. I am voting for years, for a better way of handling this. But it's very hard to achieve. The concequences are hard to forseen. For the payment case, I believe that a payment module should call a hook, so the amount get's corrected...