Hierarchical or Non-hierarchical Custom Post Type in Real World Example

Do you need to be able to have/assign a parent post?

If yes, then use hierarchical, if not then don’t.

Hierarchical post types allow you to do one way post to post relations of the type 1:many, which is useful sometimes. E.g. pages, documentation, etc.

Also keep in mind that a post can have a parent, even if it’s in a non-hierarchical post type, as post parent is a table column and a universal attribute. Post parents don’t have to be of the same post type either, but you would need to implement the UI for that.

Keep in mind though, that sometimes a taxonomy is a more appropriate method of applying hierarchy/structure.

In the grand scheme of things, setting something as non-hierarchical is a very safe bet, since non-hierarchical post types can be made hierarchical at a later date without data loss. The need for a hierarchical CPT is not so common, and the decision itself isn’t as important as CPT vs Taxonomy, and isn’t as important as people might think