What you describe is an ideal TCP connection termination, which is not what Raccoon was talking about. ICMP packets are usually coming from routers somewhere along the route from the IRC server to you, to inform you that something there went horribly wrong (eg. a certain route suddenly disappeared). Since routers don't understand IRC or even TCP, it makes perfect sense to use ICMP in that case.

Btw, there is no such thing as the "half-open" sockets you described earlier. The closest I can think of is "non-blocking" sockets, but that still doesn't entirely match your description...