I only use Google for calendar but I think I had to fire up Safari on my iPhone and go to http://m.google.com and register the phone by logging in. Once I did that, the ActiveSync feature worked and calendar changes were pushed to my phone.
My thought as well. If you set it up using the gmail setting it won't push and will only fetch. You have to set it up as exchange to get push. I went so far as setting up an icloud email and almost started converting everything over before I found out you could set it up as exchange.(I may still convert anyways)