Why do globals have external linkage by default?
This is at least in part a result of the historical development of C, as @EricPostpischil already remarked.
From a modern perspective, I might suggest that because relying on external variables and even internal variables is usually poor practice, language design considerations related to those may not have been weighted very heavily. However, projecting that viewpoint onto Dennis Ritchie may be anachronistic.
In fact, I think it more likely that in the day, Ritchie assumed that programmers declaring file-scope variables would usually want them to be accessible throughout the program, not just in the source file where they appear. That is, that they would usually want external linkage. If he did assume that then I think he was right. The same applies to functions, too, where the decision is less controversial, and the result that the rules for the linkage of file-scope variable and function identifiers are consistent is a gratifying outcome.
With respect to the example code:
x
cannot be defined in another source file [...]
Agreed, supposing that "cannot" is understood as being qualified by "without producing undefined behavior".
z
also cannot be defined in another source file [...]
Agreed, subject to the same caveat as above.
so neither x nor z can be usefull with external linkage.
Not agreed. x
and z
cannot be defined again elsewhere without producing UB, but they can be declared again, in the same translation unit or others. Where an external declaration of them is in scope, they can be accessed. That an additional keyword must be supplied in declarations in other translation units does not make it useless for x
and z
to have external linkage by default. Nor is it unreasonable that the programmer is obligated to pay attention to ensuring that there is only one external definition of those variables.
Perhaps you are coming to this from the perspective that there is a trap here for the unwary, which there is. But that's an entirely different question from the default choice of linkage.