Not all of the ROI can be captured with fares.
For example, public transit takes people off the road and keeps commutes for other people reasonable (or at least makes them less bad). Which is why it makes sense for public transit to be subsidized by people working in a region even if they aren’t necessarily using it.
If public transit is good enough, it can even make it so people don’t need to purchase their own cars+gas+insurance, which is a huge cost savings. You can argue that this would be more fairly priced with fares than taxes, but again, cars off the road (less parking infra, less air pollution, etc). Only capturing this value via fares turns this from a global optimization problem for a region into a local optimization problem for each agent
Also some public transit does pretty well with fares anyway. Caltrain covers about 75% of its operating budget with fares (and parking and some other minor income sources).