My solution was correct, but I didn't implement all of the necessary accessors.
This appears to be the minimum set of accessors that should be implemented.
- (void)insertObject:(id)object inEventsAtIndex:(NSUInteger)index;
- (id)objectInEventsAtIndex:(NSUInteger)index;
- (NSArray *)eventsAtIndexes:(NSIndexSet *)indexes;
- (void)removeObjectFromEventsAtIndex:(NSUInteger)index;
If these are in place the array controller will use them instead of the setter getter for the array attribute.