Using WP meta query to show custom post types by a start and finish date

The query will by default GROUP BY the post ID, meaning that a post will only appear once in the list. You can remove that GROUP BY pretty easily with a filter:

add_filter('posts_groupby','__return_empty_string');
$events = new WP_Query($args);
remove_filter('posts_groupby','__return_empty_string');

That might get you what you want. It is a bit hard to tell. Without the GROUP BY your post should show up multiple times in the list. I suspect that you will still have to loop over the results and organize them to get exactly what you want though.

See:
https://codex.wordpress.org/Function_Reference/_return_empty_string