Jamie - I've faced the same issue, and I like your solution. Why use space and memory, and introduce the opportunity for gaps in the date ranges, when the logic indicates that gaps should not be possible.
One additional challenge with this is that if you have an automated BI tool that auto-gens SQL select queries, it might be challenging to join to the table that has only one date. For example, a tool we have at my workplace has a "join between" GUI widget that can handle the scenario "table1 join table2 where somedate between table2.start and table2.end" but perhaps not the more complex query required on the single-date version. That could mean having to fall back on the view, and then performance might be a question.