Sure thing.  What was happening is that on WPeC initialization setup customer gets called.  Setup customer would force shipping recalculation regardless of what was going to happen later in the request processing.  This was happening for all HTTP requests, including AJAX requests.

So in the scenario where a user changes a shipping address parameter, WPeC gets notified and says "hey shipping parameters has changed,. any quotes I did before are no good clear them."  And it clears them.

Then the user clicks the button to submit the checkout.  Remember we don't have any valid shipping quotes.

The HTTP AJAX request would go through the setup customer action, automatically assign a shipping option.  The submit checkout processing would go through, the test for no shipping quotes would never fail, no informative message to the user, and the checkout would succeed, perhaps with an option the user did not want, and perhaps with a different order total than the user had on the screen.  

Remove the automatic selection of shipping quotes at init and submit checkout sees no valid quote selected, gives the user the informative message, and the user gets to make the choice, or at least see the correct total for the default shipping option.

That's also why the shipping quotes are now recalculated when generating the checkout page.  So the user sees the current and correct shipping options and total.