Presheaves on a category $C$ form the free co-completion, in the sense that every functor from $C$ to a cocomplete category extends in a unique way to the presheaf category.


If $C$ is equipped with a Grothendieck topology, then a similar statement holds if we ask that our cocontinuous extension also send some diagrams formed out of coverings to colimits.


A rough but pleasant analogy is that the presheaf category is like the free abelian monoid on a set with colimits replacing sums, and the sheaf category is what you get by quotienting by some linear relations.


From this point of view it is obvious that there must be a cocontinuous functor from presheaves to sheaves, which of course is sheafification. However from this perspective it seems somewhat surprising to me that the category of sheaves embeds as a full subcategory of presheaves.


Is there some reason to expect this to be the case from thinking only about cocompletions and related abstract nonsense?



Why do sheaves embed in presheaves?
The universal properties you describe (by the way, you need to either restrict to the case that $C$ is essentially small or restrict to what are called small presheaves) tell you what cocontinuous functors out of sheaves or presheaves look like. But the embedding $\text{Sh}(C) \to \text{Psh}(C)$ of sheaves into presheaves isn't cocontinuous so the universal property isn't applicable here.


To my mind, the general point here is that if $F : C \to D$ is a functor and $D$ is a cocomplete category then the induced functor $\text{Psh}(C) \to D$ is always the left adjoint of a functor $D \to \text{Psh}(C)$, namely the restricted Yoneda embedding


$$D \ni d \mapsto \text{Hom}(F(-), d) \in \text{Psh}(C).$$


Taking $D = \text{Sh}(C)$ and $F : C \to \text{Sh}(C)$ the Yoneda embedding we get the right adjoint of sheafification, which is the inclusion of sheaves into presheaves. I suppose there's an additional question of why this adjoint is fully faithful. 


