In both apps, when I tapped the Groups button, I saw that there were two groups in each app: On my iPhone and MobileMe Account (or something like that, indicating my MobileMe account). I then started digging around in both the MobileMe and iTunes sync settings. As it turned out, I had the phone set to sync via both iTunes and MobileMe. I've had it set like this forever, but it seems iPhone 3.0 allows you to have both sync types active at once. When you do, you get a group for each.
Once I figured out what was going on, I disabled the Mac sync and left MobilMe sync active. However, I still had two groups on the iPhone, which I didn't want. I tried the obvious solutions to remove the duplicates. I tried syncing via only MobileMe, then only via iTunes, but neither got rid of the duplicate groups. I even tried the "Replace information on this iPhone" options in iTunes, but still had the two group problem.
Finally, I found a brute force solution that seems to have worked. On the iPhone, I deleted my MobileMe account, and then set it up again. When I then turned on MobileMe syncing for calendars and contacts, the iPhone told me there were existing records, and did I want to merge them with these newly-synced records. I said yes for both contacts and calendars, and that was the end of the duplicates!
After all that, I've actually enabled iTunes sync again -- but only for those subscribed calendars that MobileMe sync isn't able to handle. I believe this was the intent of the change in 3.0, and it's a good one ... it just caught me off guard at first, due to my redundant settings.

