I'd like to comment on this part, about actually writing on cards:
> you can create an account online and associate the card with your account, and then you can add value online. This is convenient, but confronts the offline nature of the system. You add value to the card, but there's no way to write the new value to it.
> The solution, or at least partial solution, to this problem looks something like this: fare payment terminals have to receive a streaming log of value-add operations so that they can apply them next they are presented with the relevant card.
I think that's why new systems often use NFC, since smartphones can do NFC this has the potential (because many NFC transit cards don't allow it yet) to actually charge cards from smartphones. In practice, none of the transit systems I regularly use allow it, and although it's in beta in Paris they only whitelist a handful of specific smartphone models so I can't do it either. But it's a possibility.
It could work the same with ISO 7816 smartcards if people just had card readers at home, but in practice here in Belgium where most people have such card readers (used to authenticate online with one's national ID card, although this is becoming less common now that there's a smartphone app for that), this has never been used for anything else basically.
And for some reason, smartcard companies seem to be totally unable to devise user-friendly interfaces. It's been more than 30 years now so you might think they have had the time to think about it, but... no. I wish there was just a web standard for that with a standard browser-provided UI.