Here's the latest update: Everything is as it was yesterday. (see below)
Both appointments that originated in the Google calendar on my Mac are still at the correct time zone. So it seems that only appointments that are created on the iPhone, and that are attached to the Google calendar, are affected by this bug.
And this jibes with the other posts here. Moving an appointment from one calendar to another on the iPhone is essentially re-creating the appointment on the new calendar, so is affected by this bug. It would also explain the issue I've been seeing with Facebook appointments for a while now, where it shows (GMT) on the entry, because those are created automatically by my phone. I've seen (GMT) on those for at least a month... which makes me suspect that:
1. The bug is within iOS, but
2. Recent changes with Google's calendar service have revealed the bug.
3. Whatever server Facebook appointments are saved on has the same issue, and has had it for a while.
I could see this being a (mis?)configuration on the servers, creating a non-standard environment, and recent iPhone updates has made it more picky (read: engineers saying "if they won't follow the rules, we'll just have it break"). This could be argued to be a "feature" I guess (but those kind of engineers are so annoying to the end user.)
OR: iPhone is creating or misusing some feature or data field in the appointment, and no one else in the universe is creating or misusing this field. This would be definitely a bug. I suspect this is what's happening.
If iOS is setting a field unique to iOS appointments to the value of the server's time zone, and no other device or service creates that field or can read that field, and only other iOS devices can read that field and so manifest the bug... maybe there's some kind of automated "cleaning" script that can strip that particular field out of all the appointments and thus iOS would see it as any other appointment. This might work on Exchange servers where IT can run scripts... but I don't know how to accomplish this on Google calendar.