I just rebuilt the calendar (6 times). MSFT advised that a code update likely caused this issue in our case. A calendar update was published to SPO Calendars to remove Views that haven't been used in 6 months. There were other tidbits in that code push, and apparently that's what corrupted our calendar features.
Full displosure: this is an open ticket with O365 support. And it has been open for over a month. Client needs a solution that works, so I've done a fresh build Using an OOTB calendar on 3 different occasions. We have a need for two managed metadata columns - those are working fine. The first rebuild: the end dates reset themselves to Dec 14, 2017. Second fresh build: start dates reset themselves to Feb 17, 2018. Third re-build: a combination of those two dates, or Christmas: Dec 25, 2017.
For the recreations: I've tried with content types turned on (for Event metadata), turned off (local site column creation), manually populated, populated from Excel export, using the calendar app, and using a custom list.
The only thing that is the same between all of these instances is the use of two managed metadata fields that don't malfunction here or anywhere else in the tenancy.
Any suggestions? This can be replicated in a very basic test version of the site collection.
UPDATE: We've received a 'calendar reset script' executed for us from support - since we only use the one corporate calendar. That seems to have resolved the situation, as the 4th build now functions as expected. I'd love to know what that was, to share here - but alas...