It’s difficult to get a good, close airport station if the line itself is designed/intended to go beyond the airport. Seattle is reasonably convenient to the airport, but does require a long walk. On the other hand, while certainly a major destination, the Link light rail goes beyond SeaTac airport and thus, in order to be convenient for non-airport passengers, doesn’t go right up to the terminal.
SFO is an interesting one. Besides the points already made, I’d say their nonsensical service pattern could have been improved if they had made San Bruno the main Caltrain connection instead of Millbrae. The BART tracks cross over the Caltrain tracks just south of the existing San Bruno station. Caltrain does have a San Bruno stop, but it’s not conveniently connected to BART. One of the biggest failings in terms of airport connection was not making it convenient for people riding Caltrain from the south to access SFO via BART. Until a couple of years ago, you could not ride directly to SFO from Millbrae on weekdays before 7 pm, because the Millbrae and SFO trains were on different routes. Off peak service combined the two, meaning through riders had to make the long, time-wasting deviation via SFO.
They recently added SFO-Millbrae shuttle trains to fill in the gap. This would be completely unnecessary if Caltrain and BART had a better connection than Millbrae (and this would help not only those going to the airport from the south, but also those who make Caltrain/BART connections as part of their regular daily commute, because they’d have twice as much BART service they could ride).
Here is a well written article, with insightful comments that add even more clarity, about the BART<->SFO project.
Every year, thousands of holiday travelers endure the soul-numbing BART trip to and from SFO. Does it really have to be this way?