Suponiendo que el código de la página que has publicado es el "correcto" (el que estas trabajando y el que te da problemas) es sencillo el porque solo carga un select, veamos tu código....
Código Javascript
:
Ver original<script language="JavaScript" type="text/JavaScript">
$(document).ready(function(){
$("#select1").change(function(event){
var id = $("#select1").find(':selected').val();
$("#select2").load('genera-select.php?id='+id);
});
});
</script>
<script language="JavaScript" type="text/JavaScript">
$(document).ready(function(){
$("#select1").change(function(event){
var id_hab = $("#select1").find(':selected').val();
$("#select3").load('genera-select.php?id_hab='+id_hab);
});
});
</script>
El primer código si funciona (el del #select2), porque EXISTE un select con el ID "select2" para rellenar, en cambio, en todo el código de la página no hay ningún select ni ningún otro elemento con dicho ID (select3), por lo tanto jQuery no tiene nada para trabajar los datos enviados desde PHP, ahora, mas adelante tienes una función que genera el select dinamicamente, pero este es unicamente invocado cuando cambia el option seleccionado del select "habitaciones" como puedes ver, es un relajo, en todo caso, primero debes verificar si existe un elemento con el ID "select3" antes de enviar la petición a PHP, o de otro modo, invocar la función "createTexts" antes de enviar dicha petición...
Por ultimo, sin ofender pero, tienes un relajo de Javascripts, tienes $(document).ready al por mayor, lo cual no es nada recomendable, alenta el navegador, todo lo que deba definirse al cargar la página es mejor definirla en un solo evento onload que en varios, y por ultimo, evita estar cargando archivos JS dentro de body, para eso existe el elemento head donde se cargan las dependencias (CSS,JS,etc)