Nothing is ever simple with events. We noticed an issue with additional events on recurrence events - that is, dates with an RRULE and then an additional RDATE value added. Simplest test case is to create an event with a recurrence of 1 on today's date at 5pm and then add an additional date for tomorrow. If you look at the actual rrule value stored in the db the RDATE component has a time element at 00:00. On the site it will say tomorrow's event is at 5pm, but when downloading the ics file it shows as 12am.
Initially I thought this was a bug with the widget not applying the right time, but perhaps that's a technical necessity because the time or whole_date option isn't easily retrievable and could change. Given that the date shows correctly in Plone, I'd guess that it's just processed when accessed. So to fix the ics download, does it seem appropriate that we should get the RDATE value and convert the time component to match whatever the main date has?
I did also submit an issue ical RDATE missing time for additional date · Issue #2 · plone/plone.app.event · GitHub