acs-events is a generalized package. Timespans and timeintervals are an integral part of calendars and events.
Basically (IIRC, when this was specd), an activity is generated, it has neither time or date (i.e. walk in the park), it becomes an event when a time and/or date is created. An event can have a start date/time and no end time and vice-versa (i.e. walk 3 miles on Sat at 4PM).
Events can also span more than one timespan and/or interval. acs-events is not broken and calendar correctly uses it's services. The rest of the calendar datamodel is as you say in need of work (there are some other threads regarding this.)