If you have self-referencing rows, you're going to wind up with two options: an inefficient recursive query or inefficiently issuing N+1 queries. The recursive query would wind up being faster simply because there's a lot less overhead. That said, I don't know what additional optimizations or penalties are going on in the system, but I have never converted a situation from N+1 queries into a recursive query and found a performance degradation.
Of course other options should always be considered. Joe Celko has a book on storing trees in the database I've been meaning to pick up.
No doubt - the various tree methods all have their drawbacks too (more to manage when manipulating the tree).
It's all going to depend on your usecase but in general these sorts of path operations tend to be more read and less manipulation. You'll almost certainly get much faster lookups if you're not using recursive queries (as you can normally just use an index).
Of course other options should always be considered. Joe Celko has a book on storing trees in the database I've been meaning to pick up.