While I was looking into how to sync *both* Google Calendar and GMail Contacts between Google and iPhones, I found this Google article:
http://www.google.com/support/mobile/bin/answer.py?hl=en&answer=138740.
In a nutshell, you need to choose to add a a Microsoft Exchange account instead of GMail account. Kind of weird but it works. If you just want to sync Google Calendar *without* GMail Contacts then you can follow the previous post.
* Go to Settings -> Mail, Contacts, Calendars -> Add Account… -> Microsoft Exchnage
* Enter
Email: me@gmail.com
Domain: left blank
Username: me@gmail.com
Password: secret
Description: My Google Calendar
* Click Next
* Enter
Server: m.google.com
* Click Next
* Click Save