Yes, when I was discussing this issue with the documentation folks they suggested consulting with the FIDL team, so I think we have a good group in this thread to discuss.
I think a good starting organization to the FIDL reference would be how interfaces are exposed to users. A first step would be to group all those that are a part of the Fuchsia core SDK. It's not obvious to me how to figure that out, and it might actually be a property of how you assemble the SDK.
For the remainder, it seems there are at least a few that shouldn't necessarily be in the documentation at all (test.placeholder)? so let's filter those out. If there are others that are really only private to some internal module, either move those elsewhere or suppress them from the main developer documentation.
I started this all by looking at the USB interfaces, so for those I would group them by ones that are used by clients to communicate with USB devices vs. those intended to be implemented by drivers. The rest are mostly of interest to those developing the Fuchsia platform USB stack so I would mark them appropriately.
This also leads to some other questions: what's the right unit of organization for platform interfaces in general below the Fuchsia platform SDK? I think the Modular SDK RFC might be the place to answer these questions, so I will take a look there to see if that might offer some principles.
I'm guessing that the kind of organization I'm talking about here is orthogonal to the kind of attributes that FIDL expresses, so the right place to record all this might not be in FIDL itself but rather in some kind of configuration or annotation file. That would especially make sense if some of these organizational groups depend on how you package the built software that implements the interfaces. Curious to hear your thoughts.
--Curtis