$address in the notify event depends on the server sending the address, this only happens on some IRCDs using the WATCH system.
If the network doesn't have WATCH implemeted then ISON is used and the address is not a part of ISON reply, so will only be available if the notify user is also on a common channel (and IAL is on (by default it is)). The same applies to $notify($nick).addr.
You could use something like this, but if you have a lot of notify entries it could easily flood yourself off (and again and again ....)
on ^*:notify:if !$notify($nick).addr { userhost $nick | inc -u10 %uhost. $+ $nick | halt }
raw 302:*:{
var %a = $gettok($2,1,61)
if %uhost. [ $+ [ %a ] ] {
echo -astic notify * %a ( $+ $remove($gettok($2,2,61),+,-) $+ ) is on IRC
halt
}
}