Let’s start with explaining a little bit about some GD features:
1. The same listing cannot be in more than one custom post type [CPT] at the same time.
2. A listing can be within multiple categories of the same CPT.
3. Price packages are set per CPT.
4. Custom fields are added per CPT.
5. Price packages can restrict a listing to a maximum number of categories.
6. Price packages can also prevent a listing being added to particular categories, or the use of some custom fields.
So what does that mean?
7. If there are significant differences between listing types, it might be better to use CPTs.
Let’s apply all this to your question:
8. Categories or sub-categories for lawyers might be quite different; some example categories might be “family law”, “business law”, “vegetable farmer” and “rabbit farmer”.
9. Extra custom fields might be “Vegetables we grow” and “law are specializations”.
10. Now you can organize all that with categories and sub-categories, or with CPTs and categories.
11. But if your listings and price packages will be allowing for very specific content, CPTs will be easier to set up.
12. If your listings will be very generic [only basic info and address and contact details for example] then there might be no need for CPTs.
Franchises are also per CPT level. Franchise pricing is set within a price package, so franchise pricing always follows the pricing of the main listing [but can be a different price per franchise than the main listing].
Hopefully this assists, you can also review https://wpgeodirectory.com/docs/places-categories-and-listings/#advantages
Thanks