WebGUI::Macro->process does take exactly two arguments. $session and a reference to the HTML to be processed.
Inside of process, it parses out the macros and processes them individually by calling each with a Session variable and all the parameters from the macro instanciation. The docs are correct.
Closing as not a bug.