A little rewrite of your code, I left out all unused parts in alias theme.notice.
It's working with nickserv etc for me (that is: it does not create a separate @notice.nick window, but it does "theme" the nick in the display of the received notices - dunno if that is what you want) smile
If you still have issues with nickserv etc, try putting the script higher in "load order".
Code:
alias -l theme.notice {
  return $+($chr(3),06<,$chr(3),02,$1,$chr(3),06>,$chr(15) $2-)
} 

on &^*:notice:*:?: { 
  if (!$istok(Chanserv Nickserv Memoserv,$nick,32)) { 
    var %w = $+(@,notice,.,$nick) 
    window $iif($window(%w),-a,-e) %w
  } 
  echo $iif($window(%w),%w,-a) $theme.notice($nick,$1-) 
  haltdef
} 

on *:input:@notice.*:{ 
  if ($left($1,1) != $readini($mircini,text,commandchar)) { 
    .notice $gettok($active,2,46) $1- 
    echo $target $theme.notice($me,$1-)
  } 
}

on *:nick: { 
  if ($window($+(@notice.,$nick))) { renwin $v1 $+(@notice.,$newnick) }
}

on *:quit: {
  if ($window($+(@notice.,$nick))) { echo $v1 $nick quitted $network $+ : $1- }
}

raw 401:*: { 
  if ($window($+(@notice.,$2))) {
    echo $v1 $2-
    haltdef
  } 
}

Note that I added an "on nick" event, an "on quit" event and a raw event:
1) If the user changes his/her nick and shares a comchan with you, the script will rename the respecive @notice.nick-window (you can keep on using this window).
2) If the user changes his/her nick and is not sharing a common channel, or the nick is quitting, your mIRC won't notice this event. If you now try to send a notice to that nick, you'll receive an error message - this error message is now displayed in the notice window too.
3) If the user quits the network (and you share a common channel), you'll see this in the notice window as well.