Not just a mobile phone, but a phone with either iOS or Android. Plus, a phone with an account with either of two parent companies (avoiding that on Android is possible, but far from trivial). Any "alternative" system is basically a non-starter as all these apps are typically only developed for these platforms, and it's become very hard for any new player to enter the market.
While the duopoly is better than the monopoly of Microsoft Windows back in the day, it's also worse as the reliance on software is much greater, and its become harder (if not impossible) to write your own implementation for $alternative_system.
I think the logic is you still need some sort of computer to download and display your ticket, whereas with a paper ticket you don't need any external equipment. This discriminates against those too disadvantaged to own such a thing. You can argue that if the government is going to make possession of a device a requirement to access government functions, they ought to provide it.
I wondered on a recent trip where I was supposed to add credit to a Västtrafik card I had from a previous trip.
In Denmark, there are equivalent top-up machines at almost every rail and metro station. (The exceptions are some very rural lines, where machines are on trains instead.)
At the central station in Copenhagen there must be at least 10 machines, if not more. There are also two SJ ticket machines! Sorry Gothenburg.
You must go to pressbyrån, but many people use their app to buy the ticket. This of course means that you can get fined if your phone runs out of charge.
The trams have a machine selling tickets on board, and that costs sensibly more than the other options. There is no way to buy tickets on a bus. On a train you must plea your case to the conductor as to why you have no ticket. For example like explaining that the pressbyrån closed at 15.00 and the closest open one implied an 8km walk.
While the duopoly is better than the monopoly of Microsoft Windows back in the day, it's also worse as the reliance on software is much greater, and its become harder (if not impossible) to write your own implementation for $alternative_system.