Actually, a small hack to the code is enough... Though it might be a bit scary, as I haven't read through the code properly...
Feeding the SVSJOIN with a NULL pointer for the password-string works for channels that doesn't need it...
Change:
anope_cmd_svsjoin(s_NickServ, u->nick, ac->channel);
to:
anope_cmd_svsjoin(s_NickServ, u->nick, ac->channel, NULL);
Just a quick 'hackup', possibly we lose out on a byte as we don't feed the routine properly, but - hm, it works for me...