buenas,
tecnicamente en javascirpt no hay forma de detener el proceso por un periodo. o sea, no hay nada similar a la funcion
sleep. lo de tu caso se debe a que el ciclo for evalua todas las iteraciones de modo que terminas teniendo X cantidad de instrucciones programadas. un ciclo se evalua a la velocidad del reloj del procesador, por tanto las X instrucciones programadas tienen un tiempo de diferencia entre uno y otro a nivel de milisegundos. por eso es que te aparecen todas las alertas una tras otra.
por otro lado, no veo porque hacerlo de esa manera cuando setInterval es un programado persistente. es decir, el codigo se evaluara indefinidas veces por cada lapso indicado en el segundo parametro hasta que no se detenga con clearInterval.