The regex /^([\+]?[iRmN]+)$/ almost worked. It didn't work in situations where it was +i-G, etc.

Code:
on *:mode:#: {
  if ($me ison $_botchan) { 
    ; remove from the first word of the mode string everything that is no char out of: iRmN+-
    ; if anything besides "+" and/or "-" remains: message the changes of the modes "iRmN" to $_botchan
    var %m = $regsubex($1,/[^iRmN+-]/g,$null)
    if ($remove(%m,+,-)) {
      msg $_botchan $chan Modes: $replace($iif(($right(%m,1) isin +-),$left(%m,-1),%m),+-,-,-+,+) set by $nick
    }
  }
}

This is almost it.. however after playing with it I still can't make it ignore the changes if they are unset, I just need it to show when they are set.

Thanks for all the help so far guys.