So that a category can remain active while you are browsing all its subcategories, and a subcategory can remain active while you are browsing its items.
When you do this, your route names change, so your item route moves to being the category.subcategory.item route, and its files get nested like templates/category/subcategory/item.hbs.
Since the child routes (like item) may need access to some of the parameters or models from their parent routes, you can use this.modelFor('category') or this.paramsFor('category') from the child route.
You may need to pay attention to the difference between category.hbs and category/index.hbs.
It’s true that category.hbswill stay rendered during all of its child routes. But you don’t need to put anything into that template. If you put content into category/index.hbs, it will only render when there is no other child route active.