Using some Visibility parameters and a simple formula structure, you can use a Revit family to store a collection elements and then selectively show them by using a single lookup value. This allows you to drive many visibility states (programmatically) through the modification of a single instance parameter value.
In the case below, I created a Annotation family and multiple Yes/No visibility parameters, which I applied to Lines:
Then, I make a VisibilityEnum integer parameter, and set the Yes/No parameter formulas to a given integer:
You can also use Greater Than and other operators to show items that are visible across multiple visibility states:
In the project environment, you only need to set one instance parameter to change visibility states:
Finally, with some inventive use of Excel and Dynamo, you can drive this visibility parameter programmatically, even mapping the visibility state to the owner view of the family instance in Revit: