La diferencia principal entre las 2 estructuras de tu post es que mientras la primera evalúa todas las condiciones siempre, la segunda evalúa sólo hasta encontrar una condición que sea true (cuando encuentra la primera que sea igual a true, ejecuta las instrucciones correspondientes y no sigue evaluando el resto de las condiciones):
Código:
<script>
if(1){alert(1);}
if(1){alert(2);}
if(1){alert(3);}
if(1){alert(1);}else if(1){alert(2);}else if(1){alert(3);}
</script>