Always Keep the empty cards for two weeks and then double check the balance before tossing the card. A charge can be authorized on the card and not settled. If this is the case the card may show a zero balance, but when the authorization expires, the amount authorized will show on the balance of the card again.
I've had the card processed incorrectly a handful of times and I just hold the card for two weeks. If unsure, call the gift card phone number and a CSR can identify what charges may still have an authorization hold, but have not yet settled.
A related note: When checking into a hotel, if you use the gift card, this will automatically authorized the gift card for the amount of the stay plus incidentals. It may take a few days to settle the final bill to the card, so if you checkout early or have few incidentals, the card balance may be incorrect for a while.