Você quer algo assim:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
O
having
A cláusula está contando o número de linhas durante esse período para ver se ele corresponde ao número de dias que você precisa. Esta é uma lógica "inclusiva", portanto, se $start = $end
, ele assume que você precisa do quarto nessa data.