Agreed.  I think what we should do is add the line item validation mentioned.  Then we should probably standardize how to handle currency change with a method in the OrderUpdater.  Right now the multi currency extension is doing it in a controller https://github.com/spree/spree_multi_currency/blob/master/app/controllers/spree/currency_controller.rb but should really be handled by the OrderUpdater I think.