Booking database design with a twist
the maximum stay for users who don't put a end date is 3 days,


Default end date in db = 3 days. Maybe marker "tentative". Issue being - if you do not know when they move out and can not have overlap, you MUST reserve the maximum stay.

So, your solution is as good as it gets.