I wonder why do one cares that pushforward of quasicoherent sheaves satisfies equality $f_*g_*=(fg)_*$, but for pullback there is only canonical isomorphism $g^*f^* \cong (fg)^*$?
I believe that the fact follows because $A \otimes_B C \otimes_C D \cong A \otimes_B D$ is only canonical isomorphism, not equality. The fact is mentioned in Vistoli's Grothendieck's FGA explained, 3.2.1 as $QCoh$ is a natural example of pseudo-functor. Thus another side of the question: why is it only pseudo-functor, and does one really cares about it (or is it like set-theoretic problems: one can always solve them, unless doing something really stupid)?
It seems to me that the question essentially contains its answer. One would care about the differences, if one cares to know what things are!
Having the equalities $(f\circ g)_\ast=f_\ast\circ g_\ast$ and ${id_X}_\ast=id_{\mathbf{QCoh}(X)}$, for every composable pair of morphisms $f$ and $g$ in $\mathbf{Sch}/S$, and for every $X\in \mathbf{Sch}/S$, implies that there is a functor $$ \mathbf{QCoh}:\mathbf{Sch}/S\to \mathbf{CAT}, $$ where $\mathbf{CAT}$ is the category of large categories and functors between them, with $\mathbf{QCoh}(f)=f_\ast$. On the other hand, in general, ${()}^\ast$ is not a functor between categories, it is rather a pseudofunctor $$ \mathbf{QCoh}:(\mathbf{Sch}/S)^{op}\to \mathbf{CAT}_2, $$ where $\mathbf{CAT}_2$ is the strict $2$-category of large categories, functors between them, and natural transformations between the latter, with $\mathbf{QCoh}(f)=f^\ast$.
The question whether one needs to distinguish between an equality and a canonical isomorphism is essentially the same as asking if, in a group, one needs to to distinguish between the identity element and a choice of an element of the group.