Felix Lamouroux's Offmaps is rather good in this regard, though uses OpenStreetMap data in place of Google's. Jailbroken users can install Maps Enhancer, which turns on caching for the built-in Google Maps app. I'm not aware of any App Store apps that cache Google's data, and I seem to recall that apps based primarily on Google Maps are required to be free.