As people noticed, Revit .NET API has inconsistencies here and there. It also exists between feature availability and API applicability. Here is a case.
Document.FamilyManager.MakeType/MakeInstance
The above methods are supposed to make a family parameter to apply to type or instance. Though Revit itself treats each built-in family parameter different now, its API treats them still the same:
"A BuiltInParameter cannot be changed from instance to type or type to instance."
That makes it impossible to change the Structural Material built-in family parameter of the Structural Column family from Instance to Type or Type to Instance, as the above message indicates.
Obviously, the Revit .NET API functionalities do not exactly match with product features, or simply wraps them per se. It's easy to understand since they are pretty different animals. It is not however that its API cannot do what its product allows, in this simple case.