Because you aren't actually sending the value=pizza part -- & is a special shell character and your command stops there. Try either escaping the & or single-quoting the whole kmtrigger string: open kmtrigger://macro=URL%20test\&value=pizza
or open 'kmtrigger://macro=URL%20test&value=pizza'
(This is KM 10.1.1 and macOS 10.13 -- is it just me or does it work for anyone else? I had the same understanding as @tiffle until I tried it just now!)
Two years later, I fell into the same trap. I agree, there should be a TIP paragraph pointing out that the same URL string cannot be used in the open command as in a brouwser URL field because of this issue.
Here is some suggested verbage to make the point. If anyone has a simpler or more concise way to say it, please let me know.
Please note that the above URL format will work in a Browser. When used in a KBM action like Execute Shell Script, passing the URL as an argument to a shell command like open (built in) or xcall (from GitHub), the & in the middle needs to be escaped, either by preceding the & with a backslash (\ ) or surrounding the URL string with single quotes.