One might think, as I did initially, this is just an API mash-up, or some natural language processing, but the developers geocoded many of these images manually. It's not clear a digital solution exists. This is an important contribution to the common historical record :-)
You can read more about that (and download the geocodes as a JSON file!) here: http://www.oldsf.org/about
The gist is that we made a big list of San Francisco streets and looked for intersections and addresses in the descriptions. This approach can even work for complex strings like "Mission between 16th St and 17th St". The lookup for "16th and 17th" fails, but the other two pairs succeed. We average "Mission and 16th" with "Mission and 17th" and get a geocode at the perfect spot.