To clarify why, the landscape for that is fairly grim right now. GeoNames (http://www.geonames.org) seems to be the best that i've evaluated thus far. It'll cost you at scale (not much), but it's international and can find nearby neighborhoods/cities. Google requires you to display their information on one of their maps if you use them to geocode or reverse geocode.
Question for iOS devs out there: how are you finding nearby cities in your app from a lat/lng point? (is even asking this against the ios rules?) Right now I am using geonames and the results are pretty decent. Works for now!