I solved this after a lot of headaches, resets, deleting and hair-pulling. It's actually simpler than everyone is making it out to be:
- Set up your account through Google (not Exchange).
- Once validated, make sure "Calendars" is turned on.
- Go to the "Mail, Contacts, Calendars" part of settings, and you'll see an option for "Fetch New Data" under your accounts.
- Open "Fetch New Data".
- At the bottom of the screen there is an option called "FETCH", which gives a little blurb about the schedule and battery life. It will likely be set to "Manually".
- Change the setting from "Manually" to "Hourly". On the Manual setting, the phone simply doesn't send a request for the info (that's Fetch vs Push for you).
- Go to the "Default Calendar" screen at the very bottom of "Mail, Contacts, Calendars". You should now see all your custom calendars as choices!
Once you select your new default, all calendar apps should be able to access the data like they did before with Exchange.
Adding/editing/deleting events also works fine from both the phone or the web - the changes register within a few seconds.
I have recreated the "problem" and fixed it this way successfully multiple times on my phone (iPhone 6, iOS 8.1) with multiple accounts, so hopefully this solves the problem for people!