The usual, most general-purpose recommended EC flow is:
- Customer is on "View Cart" page and clicks the Checkout with PayPal button without having entered any address or other information into your site
- SetEC with provisional shipping/tax amounts (could be 0)
- Redirect customer to PayPal site
- Customer chooses shipping address at PayPal and returns
- GetEC to find out their selected address for the first time
- Calculate any new shipping or tax and display summary on an "order review" type page (which could allow them to select from multiple shipping options, like air/ground, if applicable)
- When the customer clicks a final "Place Order" sort of button, DoEC with the updated shipping and tax amounts.
Caveat: by default the total amount of the DoEC must be within 115% or $75 of the original SetEC amount, whichever is lesser. So if any of your pricing scenarios will exceed that threshold, the original SetEC should include some placeholder Shipping and Tax amounts, so that the final total is within 115%/$75.