How do I formally show that the Zariski tangent space of the intersection of two closed subschemes is the intersection of the tangent spaces?

Call these $X = \mathrm{Spec}(A)$ and $Y = \mathrm{Spec}(A/I)$ and $Z = \mathrm{Spec}(A/J)$. Denote the point $\mathfrak{p} \in \mathrm{Spec}(A)$ by $x \in X$.

Dualizing with respect to the field $\kappa(x)$, your quotients gives inclusions $T_x Y \to T_x X$ and $T_x Y \to T_xX$. By the same argument we get a diagram of inclusions, $\require{AMScd}$ \begin{CD} T_x (Y \cap Z) @>>> T_x Y\\ @V V V @VV V\\ T_x Z @>>> T_x X \end{CD} and we want this to be an intersection. This is the same as asking for this diagram to be a pullback in vectorspaces but we won't really need this. Going back to the undualed versions (which I write as $T^*_x X = \mathfrak{m}_x / \mathfrak{m}_x^2$ etc to save space), the above diagram is an intersection if and only if the diagram, $\require{AMScd}$ \begin{CD} T^*_x (Y \cap Z) @<<< T^*_x Y\\ @AAA @AAA\\ T^*_x Z @<<< T^*_x X \end{CD} is a ``gluing diagram'' or pushout of vector spaces. Explicitly, this means it identifies $T^*_x(Y \cap Z)$ with $T_x^* Y \oplus T^*_x Z$ modulo the subspace generated by $(v,-v)$ for $v \in T_x^* X$.

See if you can show this explicitly (or verify the universal property if you prefer) in terms of ideals.