Simple: a function with parameters can work on data entirely internally, it doesn't rely on external values.
Think of it like this - if you wrote an addition function writing it without parameters makes it clumsy to use:
1) Load left value into variable1
2) Load right value into variable2
3) Call function.
With parameters, it's a lot cleaner:
1) Call function passing left and right values.
It also means that recursive functions can work: where a function is defined in terms of itself:
factorial (n): where n > 1 then n * factorial(n - 1) else 1
To do that with variables is a lot more complex, because you need to save the value of n in a stack of some form yourself to prevent you messing up previous incarnations.