It does not support .hgnores in sub-directories.
I have a lot of legacy code with .cvsignores scattered around. In CVS, when you move the directoriy from one place to another, the .cvsignores just work at the new location. (Although moving the CVS directories around is a challenge.) Whereas in Mercurial, wehen you move a subdirectory, you also need to go and fix any patterns in the project .hgignore. :-(
Because of this, one is tempted to use patterns that are possibly too broad. I have several times found myself .hgignorre'ing files in one part of the tree because they matched a pattern intended for a different part of the tree.