hook_nodeapi() argument? hook_nodeapi() only has four arguments, but the function taxonomy_nodeapi($node, $op, $arg = 0) can have an additional parameter, $arg=0. Why?
$node is not passed by reference. Why?
I'm not sure how you're counting, but hook_nodeapi() has 4 arguments, as you said, while taxonomy_nodeapi() has only 3. How they are named is totally irrelevant, only the amount and order counts. PHP doesn't have named arguments, you could also name them in your hook like this: yourmodule_nodeapi($wathever, $you, $want = 0) and it would work. There is however no reason to do it, it only has the potential of confusing someone. :)

The only important part is here is that the third and fourth argument are optional and must have a default value, because they are not passed for every $op.

About &amp;$node, that's not so nice, but not a problem. The &amp; can be left out, which means that $node is not by reference (in PHP4, that is) but it seems that taxonomy_nodeapi() doesn't need that. The other way round would be a problem in PHP 5.3 (adding a &amp; here when PHP doesn't expect one).