The push-pull formula appears in several different incarnations. There are, at least, the following:

1) If $f \colon X \to Y$ is a continous map, then for sheaves $\mathcal{F}$ on $X$ and $\mathcal{G}$ on $Y$ we have $f_{*} (\mathcal{F} \otimes f^{*} \mathcal{G}) \cong f_{*} (\mathcal{F}) \otimes \mathcal{G}$.

A similar formula holds for the derived functors and for $f^{!}$.

2) If $f \colon X \to Y$ is a proper map of schemes, with $Y$ smooth, both $f^{*}$ and $f_{*}$ are defined on the Chow groups, and $f_{*}(\alpha \cdot f^{*} \beta) = f_{*} \alpha \cdot \beta$ for classes $\alpha \in CH^{*}(X)$ and $\beta \in CH^{*}(X)$.

Of course a similar results holds in cohomology if $f$ is a proper map of smooth manifolds, using Gysyn map for push-forward.

3) If $H < G$ are finite groups, we have two functors $\mathop{Ind}_{H}^{G}$ and $\mathop{Res}_{H}^{G}$, which can be seen as pull-back and push-forward maps between the representations rings $R(G)$ and $R(H)$. Again we have $\mathop{Ind}(U \otimes \mathop{Res} V) \cong \mathop{Ind} U \otimes V$.

Edit: one more example appears in the book linked in Peter's answer. It is a bit complicated to state, but basically (if I understand well)

4) for a compactly generated topological group $G$ and for $G$-spaces $A$ and $B$ one considers the category $G \mathcal{K}_A$ of $G$-spaces over $A$ with equivariant maps (up to homotopy). Then for a $G$-map $f \colon A \to B$ one has functors $f^{*} \colon G\mathcal{K}_B \to G\mathcal{K}_A$ and $f_{!} \colon G\mathcal{K}_A \to G\mathcal{K}_B$ satisfying $f_{!}(f^{*}Y \wedge_A X) \cong Y \wedge_B f_{!} X$.

There are probably several other variations which now I fail to recall. I should mention that in some situations 2) can be obtained by 1), but not always, as far as I know.

Is there a unifying principle (even informal) which explains why in these diverse settings we should always have the same formula?