@JG in SB - Thanks for keeping on this from the beginning. As a multi iDevice user, I have also experienced this issue. I wasn't thinking much about it, but my wife has been experiencing lots of odd behavior and asked her IT support (me) to look into it.
This thread contains a lot of very good information, work arounds, partial fixes, etc.
As I read and tinkered, I came across a hypothesis on the root cause of the problem.
Let's say Apple is doing us a favor and NOT tagging our calendar entries with a time zone. When our iCal/CalDav servers receive this entry, they are left to guess at what time zone to place this in. Since all iCalendar entries are translated into ZULU, GMT, +0 by the client (see RFC 5545 for the iCalendar standards), the server correctly senses that the entry is GMT. Or in cases of servers set to other time zones, the local zone of the server. This would account for some of the variety being experienced by users across the world.
Now, once Google, exchange, or your other server using iCal interface has your entry, it stores it as a GMT entry. Open one of these entries on Google's web interface and you will see no time zone selected. When it bounces back to your device(s), it is flagged as GMT and converted to the local time zone for display. Users with iCloud that set their default time zone seem to have better luck with it returning correctly, but on Google, it sees a GMT entry and therefore stores a GMT entry and serves up the GMT entry.
Work arounds include opening the entry and getting a time zone set using a variety of methods (e.g. web interface, another client program, calendar and flipping all day on/off and setting a time zone, etc.)
So, the fix would be that Apple needs to update the calendar program to explicitly provide the user's current calendar time zone for all new entries created. This is set in TZID, TZNAME, etc. properties. They can also be in a UTC-OFFSET format that indicates the entry is GMT-5 (EST), GMT-7 (MST), etc. These settings can be global to an entry or uniquely set for the start and end times. You will note that Google allows users to specify the start time with a time zone and end time with a different time zone and it figures it out.
The only way to prove this issue is to sniff the data coming from an iDevice and decode the calendar data being shipped to the server... or have a server where you can inspect the entries upon receipt. I don't have the equipment available to test/prove the issue, but I'm sure someone on the Apple side of the house may be able to prove/disprove this theory.
@sterns003 - I saw your response after typing this up and think you are pretty much on the mark. Exchange generally handles time as UTC, but there are some exceptions. There are a few versions out there and some seem to not experience the issue, while others do. It looks like some exchange instances may use iCal, which could account for this. If the apple calendar program is not tagging a time zone property, servers will be left to guess. Since it is GMT, it won't be "wrong" just won't have the proper time zone stored to help with display.