No idea if it is the reason, coz it depends on how the SatoshiDICE server works, however:
In bitcoind, an unconfirmed transaction may be lost if bitcoind restarts.
Unconfirmed transactions from other bitcoinds are stored in a memory pool so are lost when bitcoind stops.
Or, if for some reason the 0-confirm transaction didn't make it to the bitcoind (networks aren't perfect) it wont know about it (though rare)
This also means that if bitcoind wasn't running when the transaction was sent out, it won't know about it until either it ends up in a block, or some other 0-confirm transaction requires it and bitcoind requests it from another bitcoind.
i.e. it will eventually get the transaction back again since probably every other bitcoind still has it and eventually a block will include it.
But bitcoind may not find out about it until it lands in a block (which can be more than an hour on some rare occasions - or longer if some pools are ignoring processing the transaction)