Почему изменяется внешняя переменная?
В js функциях параметры простого типа, в данном случае число, передаются по значению, т.е. копируются.
Объекты же передаются по ссылке, т.е. внутри функции тот же объект что снаружи.
Почему не скажу, 
но так работает:var a = 5;
function test(a){
    a ++; 
    return a;
}
a = test(a);
alert(a);
Делайте выводы
Второй вариант переписывает значение переменной, по этому ему не нужно возвращать результат