Lo que realmente no entiendo es como es que funciona si quiera la primera vez. No puedes asignar parámetros antes de poner la consulta. El orden correcto sería:
Código Delphi
[-]
DataModule1.zroqQRYBuscaInmueble.Close;
DataModule1.zroqQRYBuscaInmueble.SQL.Clear;
sql:='select * from inmuebles where id_zona = :PZona ';
DataModule1.zroqQRYBuscaInmueble.SQL.Add(sql);
DataModule1.zroqQRYBuscaInmueble.ParamByName('PZona').AsInteger:=cbZona.ItemIndex;
DataModule1.zroqQRYBuscaInmueble.Open;
// Saludos