I'm not using iCal to sync with the iPhone though. If you do that, all indication is that the iPhone will use iCal's colours. Google calendar with Exchange sync doesn't support colour sync - it's not part of the Active Sync protocol. So iPhone assigns its own colours. The issue I'm seeing now is that even after manually changing the colours, the iPhone changes them again when something is added to the calendar directly on the phone.
Apparently using CalDAV sets everything straight. But it doesn't support PUSH, so you're stuck setting a schedule for the iPhone to ping Google, which will eat more battery power. Or leave it set to manual, in which case you'll have to remember to open the Calendar app to see updates, and they won't show up on my lock screen automatically.