I figured out what leads up to the problem... EPC is confused if trying to use BOTH mySQL and flatfile DB formats at the same time. If I enable both mySQL and flatfile, then EPC will display events from both sources. However, any new events end up only in the mySQL database, not in the flatfile.
However, the problem happens when trying to edit an event that is in the flatfile DB... EPC says "Switching to flat-file database mode," and that's when things start to get weird. After getting that message, any new events end up only in the flatfile DB, not in the mySQL DB - this is an interface inconsistency and shouldn't happen. This then leads to the next problem: if I then disable the flatfile DB, EPC gets really confused... it tries to write to the flatfile, not to the mySQL DB, but it writes only a single event because the flatfile DB is disabled.
If I log out of EPC (to clear all the cookies) and log back in, EPC begins to behave "properly" again. It appears that this is basically an in-session issue, caused by EPC remaining in "flat-file mode" after editing a flatfile event, instead of reverting back to mySQL mode as it should.
So... I suspect this whole issue stems from a bug in trying to simultaneously handle both mySQL and flatfile DB modes. There is good reason to be using both modes, however: for example, lots of legacy events in a flatfile mode but wanting to switch (for current/future edits) to mySQL.
If we are not intended to use both mySQL and flatfile at the same time, then EPC should disallow this option - enabling one should disable the other, and there should be documentation to that effect. If we are allowed to use both at the same time, then whatever is causing this bug should be fixed... for example, after editing the flatfile event, EPC should switch back to mySQL mode so that it's not trying to edit the flatfile anymore, i.e. EPC touches the flatfile only when it needs to (when editing an event that's in the flatfile), but otherwise is in mySQL mode.
I've opened a support ticket for this (XAD-728636), but I'm pretty sure this is now a real bug, not a support issue.
Let me know if I can be of more assistance.