buenas,
se ejecuta porque esta invocando la función. recuerda que un par de parentesis seguido del nombre de la función significa invocación. en este caso, lo que estas asignando como handler del evento es lo que devuelve la función invocada. fijate en lo marcado en negrita.
Código:
$links[$k].addEventListener('click', muestraOculta($links[$k].id), false);
en el segundo parámetro tienes que pasar una función. es decir, en lugar de muestraOculta($links[$k].id), debes pasar solo el nombre: muestraOculta. si la función requiere de parámetros puedes pasarle una función anónima que invoca función con los parámetros necesarios. por ejemplo,
Código:
function(){
// asumiendo que el nombre de la funcion es function_call;
function_call(params);
}