The reason is to prevent users to mess with it. Unprotecting something is not necessarily dangerous, but unprotecting everything definitely is. Performance is probably not the issue. The real danger is that you replace a very important feature of a built-in symbol by chance. Since built-in symbols often have the
ReadProtected attribute, you cannot check beforehand whether you are going to overwrite anything important.
Regarding the appearance of held expressions: One can do this
Format[Hold[a___]] := Held[a];
at the cost of the puzzling results
a = Hold[1 + 1]
a // FullForm
(* Held *)
(* Hold[1 + 1] *)
Internally, the expression should be treated by Mathematica as usual; only the appearance was changed in a counterintuitive way. This particular issue can be fixed by giving the
HoldAll attribute to
(* Held[1+1] *)
But still, messing with internals is a very, very bad idea.
Addendum: Mathematica also provides the attribute
Locked which prevents changing the
Attibutes of a symbol. If that symbol has also the attribute
Protected then it cannot be messed with any more. That seems to be the way how developers are meant to protect their users from themselves. However, one cannot rely on the combination
Locked being used consistently for all "important" symbols.