I think that the number of resource classes and routes you need really depend on how much logic separation you need. Theoretically, you could logically group and collapse them down to a two resources for these two routes:
/my_part/{item}
/my_part/{item}/{item_type}
I know you mentioned that "default" and "special" aren't variables, but it might be an acceptable option to use the route url template to your advantage here and just check the url field passed to the route. At the end of the day, I don't think there really is a "best practice" here. I think it really depends on what you feel is the cleanest and clearest way to keep things organized.
Personally, I tend to use quite a few small resource classes. Take the following example:
/books/{isbn}
/books/{isbn}/characters
/books/{isbn}/characters/{name}
/books/{isbn}/authors
/books/{isbn}/authors/{name}
I would create a small resource class for each one of those routes. Any overlapping functionality would get tossed into a base class or other modules.
Hopefully this helps a little bit.