As primarily an application programmer, it always seemed to me the problem with threads has been preemption. My tasks are always IO-bound and so any time I'm preempted while not blocked is a wasted context switch. By cooperatively multitasking it would seem I could significantly reduce the trouble of using threads (for example, I'd no longer need to worry about synchronization) and get most of the benefits.
It seems this reasoning would similarly apply to any low-CPU/IO-bound server, such as the web server they talked about in their paper or even memcached. (But what's with benchmarking your C app against a Java one? That's hardly fair.)