A shorter answer is that there are a number of technical shortcomings with the design of the Hurd. Many of these can be categorized as either resource management issues or security & protection issues.
Regarding resource management, a problem which becomes particularly acute in highly-decomposed systems (such as multi-server systems), is the difficulty in coordinating resource use. The underlying issue is that coordination must be formalized and agents may be suspicious of one another.
To understand the issue, considering how memory is managed on Linux. When there is pressure, Linux can reach into the various subsystems and ask them to free memory. For instance, the file system code might shrink the inode or dentry cache. That's cheap. If you start moving such components out of the kernel (as the Hurd does), you also need a mechanism to recover this ability, for instance, an upcall asking applications to free memory. But this is hard: the kernel cannot trust applications to behave correctly. This is the thrust of the work on Viengoos.