In a recent video by Google's Matt Cutts, he said that geo-location is not spam. Cloaking and showing GoogleBot content that you wouldn't show users, is spam. But showing geo-location based content to users, while showing that content to GoogleBot, is not spam.
Here is the video:
This is not new, we've covered it a few times here.
In short, if you are going to geo your content, make sure to serve GoogleBot the content you would serve any user who is based in the United States. Serve GoogleBot based on the location of the IP address it is coming from.