Do I guess right that PtFogSetDefLinear() only affects the user's client?
Yes, you do. So no matter how often you call it, there is no effect on multiplayer gameplay. A step of 0.1 to 0.05 seconds should be enough to get a smooth transition without putting too much load on the engine.
SoftVolumes would actually also be a great tool in this case, making the transition depend on the avatar's position. Can Python read a soft volume's current strength?
How can I make the Python function accept parameters from AlcScript?
You can add more parameters to these ptAttrib* things at the top.
However, if you want more regions, the Cyan way to do it would be to just have more PythonFileMods. That Python file you wrote will be kind of "instantiated" for each PythonFileMod, filled with different values depending on the PythonFileMod's parameters. For some reason Cyan decided that it is a good idea to instantiate the whole module instead of just the class (which it is not), but if you just imagine the module global variables to be class properties, and the PythonFileMods calling the "constructor" (i.e. filling these ptAttrib* values), it works exactly like OOP does.
If you want different colours/fog settings for different regions, just make them PythonFileMod options, too.
Which reminds me, couldn't you even directly use Cyan's xFogSet? I don't have the source code on this machine, so I can't tell how flexible it is. This would however make your age depend on the Offline KI, so that xFogSet is present.