We had legacy from AOL - AOL's proprietary TCP stack in user space.
ICQ used AOL's TCP stack for external connections with outer world (i.e. with clients).
I asked AOL engineers why they needed TCP stack in user space. They said that back in old days (90s) there was no good scalable TCP implementation which could handle many simultaneous connections properly.
Each process which used this TCP stack had to fully own network interface.
Of course, we gradually replaced AOL's TCP stack with native stack because nowadays Linux TCP stack is good enough.
May be these days someone still need proprietary TCP stack in user land to meet specific needs which aren't available in native Linux implementation.
Also if you have TCP stack in user land, you have more control over it.