It’s one of the best books for data model design. Highly recommend.
But I still think it's useful to know the flattening idea. I've seen it show up other places like map reduce. It's a useful general idea imo.
I like paths for representing hierarchy, but closure tables can also be a good idea, depending on what you're modelling and how you query it.
That's the general case, but more specific CTE queries can be optimized, e.g. by adding database indexes. Recent versions of Postgres have greatly improved wrt. not making CTE's overly inefficient.
The only downside is that this requires updates of a large number of rows whenever the tree changes (not all rows though). If you have a sharded table that could be problematic.