edit: I tested both regex and they both fail. The first because you are using | incorrectly, and the second because it is too greedy.
short-term fix for your immediate problem:
user-type=(mod|global_mod|admin|staff)?
or if you want to capture all, not just match:
(user-type=(?:mod|global_mod|admin|staff)?)
It is not recommended to use regex to parse IRC messages. Use a tokenizer instead. Twisted has been suggested here before: http://twistedmatrix.com/trac/browser/tags/releases/twisted-15.0.0/twisted/words/protocols/irc.py#L75
or you can make your own.