Well yes, if the OS freaks (eg: starting to get out of mem.), it tends to disconnect a few (like 10) or a lot (like 80) of clients... I've seen it happen on FreeBSD, Linux, Windows... but all only if you are really hitting the limits, usually the memory limit, so with Linux/win I had that with like >5k-10k clients, or with fewer if flooding. For some reason I saw it a lot more (like: with fewer clients) on FreeBSD than Linux/win but I guess that was because I didn't finetune everything and for some reason FreeBSD hates me anyway ;).
I kinda forgot what exact quit msgs you get but there are like 2-3 variants, one of them clearly being one with buffering (eg:'Buffer allocation error').
On the other hand, can this crap be due to quitely high server load?
Yes, counterstrike server w/256mb ram is not unlikely to have this problem. Btw, -n 20 (well '19') is very low, I don't really think that's a good idea since AFAIK if another process eats a lot of cpu then it rarely gets any cputime ;). 19 is pretty much 'idle priority'.
'Ping timeout' is a whole different thing, the free-memory limits and stuff I just talked about doesn't really apply to that.. although, if the OS is completely unresponsive for several minutes you get it of course, but that's more like in case of insane load avgs [like >30, >60..], in which case you have extreme lag anyway. If you get 'ping timeout' on a LAN, then that's quite odd, I wouldn't really suspect Unreal then.
pingfreq 90 is fine, it's also the value that I like most. Anything above 300 and you are more likely to get into weird problems (and pretty much garanteed with >600/900) due to NAT timeouts.
Or, maybe it is fault our irc client? (it's a configured irc client and shared to all users via ftp, so almost all users use only it) What is the chance that there're some wrong settings?
My idea:
1. Put it on a normal priority, if you want it more 'nice'.. then at least use a range of 0-10, not more
2. Run a standard client @client, so I would suggest mIRC (w/o any script).
3. On the same client, run a ping to the server, pinging every second... like (windows) ping -t a.b.c.d >log. Then, if the client got disconnected that night, look back and make sure there was really no packetloss (especially at the time of disconnect).
4. Alternative: if 3 didn't help, try with a "/timer 0 5 /msg #dummychan I'M ALIVE!" or something, and see what happens around the "time of death" (well, from another client perspective, preferably something like an irssi on localhost @ the server)
About big names/brands and stuff, well.. I had someone once I coded a module for and he was wondering why the connection to the mysql server was so unstable.. it turned out to be a faulty $10K switch/router/whatever. It really depends, I've been running a low-budget network with ~100 pcs, 4 main switches (16port), ~20 smaller ones, and never had packetloss or other issues (constant monitoring etc)... Also at home with a cheap switch, always have been able to reach top-speeds (10Mbyte/sec), then I bought another cheap 100mbit one and wasn't able to reach more than 3-4Mb/s.. So yes, those cheap things are probably more likely to have problems, but not per se ;).
Sidenote, I agree that this is unlikely to be an Unreal problem, but.. just to help.