Buenas,
 
porque antes de lanzar un nuevo setInterval tendrías que comprobar si existe alguno y cancelar. Según tu ejemplo podría ser algo así:    
Código Javascript
:
Ver original- function comprobar(fun, time, i) 
- { 
-     if(timers[i]) 
-         clearTimeout(timers[i]); 
-     timers[i] = setInterval(fun, time); 
- } 
-   
- function muestra(tgt) 
- { 
-     destino[tgt.id] = -337; 
-     comprobar( function( ){ acciones(tgt); },  500, tgt.id ); 
- } 
-   
- function acciones(tgt) 
- { 
-   tgt.style.left=(tgt.offsetLeft+destinos[tgt.id])/2+'px'; 
-   if(tgt.offsetLeft<0 && tgt.offsetLeft>-10)  
-         timers[tgt.id] = null; 
- } 
Me da la sensación de que estás usando un id numérico y eso no es correcto.