Well, in the context of assemblies, private means that the assembly cannot reference another application outside the directory in which it was contained. Therefore, for a private application, it is used.
As for your question about the default being publicly available ... someone will correct me if I am wrong, but there is no public. He will be divided. Obviously, a general assembly can reference multiple applications and must reside in the GAC. Then all GAC rules will apply.
source share