Why does the page callback have two arguments?
Menu callbacks are passed first the arguments defined in page arguments then excess arguments from the url.

So in the above example:

menufun/1/bar/baz


Will provide these vars:

$a = 1;
$b = NULL;


If you however provide an extra argument in the url:

menufun/1/bar/baz/2


You will transfer it to the menu callback:

$a = 1;
$b = 2;


The other advantedge is like tim writes, that it allows reuse of the same code for various cases, making the module more maintainable.