Instead of digging up almost 5 years old topic you could have started a new one..
Anyhoo, using private with functions is mandatory because the function you call in a script shares the same scope with the script so if you have a variable called
_var both in the script and in the function they override each other (depending in which it comes last) unless you private it in the function.
(this is true at least in OFP, I haven't tested this in A1/A2)
So if you have a script executed by a soldier unit
_var = _this select 0
#check
~3
_stuff = _var call myfunction
?(alive _var): goto "check"
And the function
_unit = _this
_var = magazines _unit
..codecodecodecode
That would cause you errors/problems because in the script the variable
_var would now be the
_var from the function and not the unit it was originally set as.