It’s a Location IDentifier assigned in the US by the FAA and in Canada by Transport Canada (TC LID) to small airports, seaplane ports, heliports, and even train stations and other travel-related points that have no international IATA or ICAO codes.
It’s fun to trace the origins and rationale for some airport codes, but when it comes to details like this, there’s not likely to be a definitive answer. But if you wanted a reasonable three-letter designation for “San Francisco”, what letters would you use? My hunch is that the fact that the “O” can also be construed to stand for “Oakland” is just a fortuitous coincidence.
The difference here being that the full official name of BWI is “Baltimore/Washington International Thurgood Marshall Airport”, just like the full name of DFW is “Dallas Fort Worth International Airport”, whereas the full name of SFO is just “San Francisco International Airport”. The fact that in practice it also serves Oakland isn’t really relevant – it’s not in the name from which the code was presumably derived.
Even though the article agrees with me, I’m going to suggest that even as august a figure as the SFO Museum Assistant Director is really just making an educated guess. Yes, “SF” could have followed the pattern of “LAX” and become “SFX”, but in general there’s no such rigorous methodology in the IATA codes. At any rate, “SFX” today is San Felix, Venezuela, but it may not have existed at that time.
The only way to really know for sure where the “O” came from is to go back in time and read the mind of some unknown IATA bureaucrat. But if I had to put money on it, I’d bet heavily that the article is right, and “SFO” is from “San FranciscO”
The only logic, really, is determining what current or former name the code is derived from and what constraints limited the available options. Beyond that, how a name is encoded into a three-letter code is purely arbitrary. There is no other pattern. San Jose, for instance, is SJC, and Orange County airport (Santa Ana) is SNA.
In the case of SJC, the “C” might likely stand for “California” to distinguish it from over two dozen similar “San Jxxx” names, but what you gets dibs on largely depends on who grabbed the code first. Literally all 26 of the “SJx” codes are used up, from “SJA” right down to “SJZ”. Sometimes you just gotta take what you can get.