That's a good point, and I do have some 2FA set up like that. The problem is I have to be logged into a computer, have a browser open, have the 2FA extension installed, and be able to copy and paste or type the code in before the timer expires.
That's not hard at home, but if I need to sign in to my bank account while at a library or anything like that, I'm screwed.
I think SMS is popular because it's so easy to reach the people that need the codes, regardless of platform. I just wish it wasn't so bad security-wise, you know?