MonoBehaviours in Unity are generally pretty cool, but can instantly become uncool when you want to work with Generics. The UnityEditor doesn’t know how to find and instantiate generic behaviours. It won’t even let you attach them, but there is a solution.
If you’re building anything substantial in Unity, you ultimately will want to use base or code-only instantiated MonoBehaviour classes. It can be a real hassle to deal with these cluttering up your script component menu in the Unity editor when you never want to access them that way.