Ridership on BART's SFO extension (actually all of the San Mateo County extension) is well below their projections (leaving San Mateo County / SamTrans on the hook for operational costs). There's no direct service (well, not usually) from Millbrae to SFO due to work rules and the cost of running such a bloated rail system. You typically have to go from Millbrae -> San Bruno -> SFO. Don't forget that BART doesn't time their schedule to coincide with Caltrain arrivals at Millbrae.
BART already runs to OAK. The shuttle bus drops you at the terminals. The fancy cable car connector you're thinking of is going to cost riders double ($6 each way, they just announced this), and will drop you at the far end of the parking lot, away from the terminals. This is progress?
And Caltrain? Well, there's a shuttle bus between the Santa Clara Caltrain station and the San Jose airport. Because funding public transit is a political football, Caltrain only runs hourly service much of the day. Oh, and despite the recently relocated Caltrain San Bruno station being on the same stretch of road as BART's San Bruno station, they're still about a mile apart (closer than before, but not by much).
It's not the taxis that are to blame for the abysmal public transit to airport scene, it's the folks that design these transit systems (folks like friggin Quentin Kopp).