[1] https://news.ycombinator.com/item?id=43993711
[2] working link since original blog is down https://web.archive.org/web/20250517082035/https://aruarian....
Remember when the system was designed in the early 2000s the Internet was much less available and reliable, and when so many transactions happen every day, you don't want to get thousands of passengers stuck inside a metro station only because some Wifi router was down.
This is basically a limitation of the CAP theorem, in these situations there's really no choice but to sacrifice "consistency" and settle for eventual consistency.
I think even credit card payments for transit also make that sacrifice. I had a weird experience using a Visa card to pay for a tram ride because they were promoting it and had a discount. The machine indicated success and let me through, but since I rarely used the card, somehow the payment didn't go through afterwards (the credit card was in a very weird state). If they insisted that all the payment transactions complete successfully for a transit payment, it would be too inconvenient and unreliable to use.
Remember originally credit card payments worked by putting the card under a slip of carbon-copy paper and rubbing off the raised digits. All the digital stuff ontop of that was just for efficiency.
Fixed terminals (like at a train station) near-instantly upload it, movable terminals (like in a bus) have a bit of a delay and sometimes only upload when the bus arrives back at the depot. It is possible to add new travel products or balance from an app / website, but you have to visit a special "pick-up terminal" to update the card.
Can confirm that Suica shows the balance in Apple Wallet.