This solution uses a numbers table in [master].
selectdt.HotelId
,dt.RoomTypeId
,BeginRange = dateadd(dd, min(dt.N), '20000101')
,EndRange = dateadd(dd, max(dt.N), '20000101')
from
(
selectdistinct
rd.HotelId
,rd.RoomTypeId
,n.N
,grp = n.N - dense_rank() over(order by rd.HotelId, rd.RoomTypeId, n.N)
from #RoomDates as rd
join [master].dbo.Nums as n
on n.N between datediff(dd, '20000101', rd.StartDate) and datediff(dd, '20000101', rd.EndDate)
) as dt
group by dt.HotelId, dt.RoomTypeId, dt.grp
order by dt.HotelId, dt.RoomTypeId, min(dt.N);