Actually, you can't make a blanket statement about which is better.
Push works by opening a socket to google, starting a read on that socket, then shutting down the radio.
Because of the rules of TCP/IP, that socket will time out in approximately 16-to-24 minutes, and the system will have to wake up the radio and establish a new socket.
If mail comes in sooner than 18(ish) minutes, you get it instantly, because the socket status change was detected when the socket became readable (because google sent you mail over that socket, which triggeres the cell tower to notify your phone at the end of the sleep cycle (Your phone listens to the tower for 0.577 ms and then sleeps for 4.615 ms. During sleep the radio's are essentially switched off).
So you might think that if you set your fetch interval at 18 minutes or longer (the longest socket duration), you would use the same amount of radio time.
But that's not right because re-establishing a socket takes very little network traffic, whereas checking email takes quite a bit of traffic.
If you have a short fetch interval, it will cost much more battery, because your phone not only has to wake up the radios, it also has to send and receive a significant amount of traffic to determine if there is any new mail.
But if you set your fetch time at 30 minutes (or more) its quite possible that fetch will save battery over push.
However, (And this is key), Google us using one socket now days to signal/synchronize all services (calendar, mail, Gtalk, Gvoice, Market, etc.)
So if you are going to have any of these running anyway, you will be waking up the phone every ~18 minutes for socket maintenance. You can't avoid this unless you turn off Sync and background data in settings.
So given that, You might as well use push for Gmail too.