Google has got pretty smart over time. There are two types of local search queries you can perform; explicit and implicit local searches. An explicit local search clearly defines that you are looking for something in a specific location such as “Hotels in NYC”. Google knows you want to see search results for hotels in New York City so that’s all they will show you. An implicit local search does not define a location but Google can figure out that you most likely are looking for something local to you (since Google knows your IP, they can figure out where you are), such as “Restaurants”. Google will show you results for local restaurants in St. Pete even though you didn’t include “St. Pete” in your query. Then there are some queries that Google will decide are not related to a location such as “Microsoft Excel”.
So local businesses want to target keywords like “Mexican Restaurant St. Petersburg” because this will help you rank for both an explicit (“Mexican Restaurant St. Petersburg”) and implicit (“Mexican Restaurant”) local search.
I have also included a great resource below if you want to learn more.
“When you perform some searches, Google might include Maps results within the web search results for those queries, or it might include some local results that change when you change your location in Google. Those queries are ones that don’t include geographic information within them, yet Google somehow decides that there’s some geographic relevance to the terms being searched for.
Some query terms likely have no geographic relevance to them, such as a query like [linux], which pretty much has a meaning unrelated to any specific location. Other queries may evidence an intent to find a location near a searcher, such as [restaurant]. A patent granted to Google this past week describes an approach that Google may be using to assign an implicit local relevance to a query term or phrase when that query doesn’t contain any explicit references to a location.”