Risolto.....il problema non era nel controller ma in jquery...solo che onestamente non capisco il perchè.
Praticamente ho modificato la chiamata ajax da:
codice:
var param = {
			"prov": idProvincia
		};
		
		$.ajax({
			type: "POST",
			url: this."sito.it/index.php/controller/filter_comuni",
			dataType: "json",
			data: JSON.stringify(param),
			contentType: 'application/json',
			
			success: function(response){
				for(var i = 0; i < response.length; i++){
					var $option = $("<option></option>");
					$option.attr("value", response[i].id);
					$option.html(response[i].value);
					
					$('#comune').append($option);
				}
			},
			error: function(jqXHR, text, error){
				alert("Error! "+text);
			}
		});
a
codice:
$.post("sito/index.php/controller/filter_comuni", { "provincia": idProvincia },
			function(response){
				for(var i = 0; i < response.length; i++){
					var $option = $("<option></option>");
					$option.attr("value", response[i].id);
					$option.html(response[i].value);
					
					$('#comune').append($option);
				}
			}, "json");
e adesso funziona correttamente....ma perchè funziona con $.post e non con $.ajax (in cui ho specificato type:"POST")