The problem is that the funds are stored on your Hop card, and have to get there somehow.
When you top up online, that transaction has to propagate out to each of the terminals. When you tap on, the terminal notices that you have a credit and adds it to your card. If the terminal you tap on to doesn't have your credit in its list then it won't happen. The main issue is with the terminals on buses, as I think those only update the transaction list once a day. If you add the transaction and tap on at a terminal connected to the network then it can happen instantly.
Yes, it's very annoying and I've been bitten by it several times, to the point of having several top-ups expire and needing to have them refunded under the old system.
Yea, its a horrific system. So the way I understand it (I could be totally wrong!), all the bus terminals get a batch list off all the top ups overnight (or within network range of base) so if you topped up online that will not have got to a terminal to push that to your card when you tap on the same day (allowing extra for non-processing days/times). If you top up at the bus station terminal then it can instantly push it to your card. With such a system of course the file with all the pending top up's can only be so big as it has to go to every terminal until its been confirmed pushed to the card, hence the need to expire top up's that have not been "redeemed" to a card.
It's beyond me how AT paid so much for such a system, yes it can operate without realtime data access to the terminals, which would have been fantastic in the 1G (analogue)/2G mobile days but its really pretty poor in today's real-time connected world.
Interesting that Queensland Translink online topup only takes an hour to appear on your card. What are they doing that AT finds too hard??