I'm assuming you're calling GetExpressCheckoutDetails prior to calling DoExpressCheckoutPayment..??
I'm pretty sure what you're seeing is the expected result. Until DoExpressCheckoutPayment is called the shipping and tax amounts could change, so GECD wouldn't reflect anything yet.
When you redirect to PayPal are you seeing the shipping and tax included in the order review? If so then you're doing everything correctly. It's just that, again, GECD doesn't include those details since they could change. For example, you could call GECD to obtain the payer's shipping address so that you could then calculate shipping and tax accordingly, and that could be different than what you sent with SEC.
Anyway, check that you're able to see what you send in SEC in the review pages at PayPal, and then finalize everything with DECP and I'm guessing you'll see that it gets included as expected (so long as you include it the same way in your DECP request.)