This problem exists with system parameters across all categories, but I'll explain with doors as an example:
There are several door system (built-in) parameters that are instance but should be type parameters and we cannot modify them to change them to type parameters:
Frame Type
Frame Material
Finish
Currently these parameters are instance parameters so when we create a schedule it's very tedious to fill out the values for each of these parameters for each door instance. Most of the time we set up different door types for different door finishes, frame types and frame materials.
We have a similar problem with project parameters for doors that should be type instead of instance:
Head
Jamb
Sill
Since the parameters cannot be modified, we create entirely new parameters for these same properties just to make them type instead of instance! For Head, Jamb and Sill it's not so bad because we can delete the original ones that came built-in after we've made corresponding type based versions.
The biggest problem comes in with FRAME TYPE, FRAME MATERIAL, FINISH because they cannot be deleted. So even if we make type based project parameters for "Frame Type 2", "Frame Material 2" and "Finish 2", since we can't delete the original system parameters, it makes for a very messy and confusing Revit file with extra parameters that are essentially the same, just one is type and the other is instance. Then we have to somehow communicate to everyone which one to use.
When creating a schedule, there is no indication of which parameters are system parameters vs. project parameters vs. family parameters vs. shared parameters. You could have seemingly identical parameters (named identically) for each of these four different parameter types and have no way to distinguish the difference between them when you're in the schedule interface adding fields to a schedule.