Just for the case someone is interested, here is another answer I've found. Probably it's equivalent to Robin's and Marty's answers, with the only difference that it's more abstract-nonsense than Robin's (so if you don't consider this as a virtue in itself, you don't have to read on) and shorter than Marty's (in particular, I don't switch to dual representations).
We will always abbreviate $\mathrm{Ind}^G_H$ by $\mathrm{Ind}$ and $\mathrm{Res}^G_H$ by $\mathrm{Res}$. Then, the push-pull formulathe push-pull formula states that $\mathrm{Ind}\left(U\otimes\mathrm{Res} T\right)\cong \mathrm{Ind}U\otimes T$ for any representation $T$ of $G$. Applying this to $T=\mathrm{Ind}V$, we get $\mathrm{Ind}\left(U\otimes\mathrm{Res}\mathrm{Ind}V\right)\cong \mathrm{Ind}U\otimes\mathrm{Ind}V$. Now, we can see the representation $\mathrm{Res}\mathrm{Ind}V$ as the left $k\left[H\right]$-module $k\left[G\right]\otimes _{k\left[H\right]}V$. Then, there is a canonical $H$-equivariant injection $V\to \mathrm{Res}\mathrm{Ind}V$ given by $v\mapsto 1\otimes v$, and there is a canonical $H$-equivariant projection $\mathrm{Res}\mathrm{Ind}V\to V$ given by $g\otimes v\mapsto gv$ for $g\in H$ and $g\otimes v\mapsto 0$ for $g\not\in H$. This projection splits the injection, and therefore the representation $V$ is canonically a direct summand of the representation $\mathrm{Res}\mathrm{Ind}V$. Hence, $\mathrm{Ind}\left(U\otimes V\right)$ is canonically a direct summand of $\mathrm{Ind}\left(U\otimes\mathrm{Res}\mathrm{Ind}V\right)\cong \mathrm{Ind}U\otimes\mathrm{Ind}V$.
"Canonically" means "canonically with respect to $U$ and $V$ and kind-of canonically with respect to $G$ and $H$" here. "Kind-of canonically with respect to $G$ and $H$" means that it's functorial with respect to maps which preserve both "lying in $H$" and "not lying in $H$", and I think we can't do better. As opposed to Robin's and Marty's proof, we don't need to rely on some randomly chosen system of representatives of cosets or double cosets.