Hai ragione, non funzionava.
Non funzionava perchè ipotizzavo che marker avesse la proprietà id_cat.

Visto che non è così, gliel'aggiungiamo noi:

codice:
var markers = new Array();

for (i=0; i < data.marker.length; i++) { 

var marker = etc//

markers[i] = marker;
markers[i].id_cat = data.marker[i].id_cat; 

}

var id_delete =   //è sempre uguale a [data.marker[i].id_cat];

//elimino array
for (i = 0; i < markers.length; i++ ) {
if(id_delete == markers[i].id_cat)
markers[i].setMap(null);
}