Proof of product rule $(fg)^{(n)}$
A "counting argument" could be as follows. Let $\mu$ be the multiplication operator and let $D$ be the derivative operator. Then the usual product rule says that we have the following identity.
$$D\mu = \mu(D\times 1+1\times D)$$
This means, by induction, that $$D^n\mu = \mu(D\times 1+1\times D)^n$$
Now expand the right hand side using the binomial theorem! This is why both proofs are the same.
Induction, of course. Suppose that it is true that
$$D^n(f\cdot g) = \sum_{i=0}^n \binom ni D^if\cdot D^{n-i} g$$
Applying $D$ you get
$$D^{n+1}(f\cdot g) = \sum_{i=0}^n \binom ni D(D^if\cdot D^{n-i} g)$$
Apply the base case to this to get
$$D^{n+1}(f\cdot g) = \sum_{i=0}^n \binom ni D^{i+1}f\cdot D^{n-i} g+D^if\cdot D^{n-i+1} g.$$
Now use Pascal's rule to obtain the induction step. Note the proof is the same as for the binomial.
Define three operators: $D_\times$ represents differentiation of a product; $D_1$ represents differentiation of the first term of the product; and $D_2$ represents differentiation of the second term. Then the simple product rule $(fg)' = f'g + fg'$ can be written $D_\times = D_1 + D_2$. Observe that $D_1$ and $D_2$ are commutative, so you can apply the binomial theorem to $(D_1 + D_2)^n$.
With (as usual) $f^{(n)}$ denoting the $n$th derivative of $f$ when $n>0,$ and $f^{(0)}=f.$
There are $n$ steps ($n$ differentiations ) to get from $(fg)^{(0)}$ to $(fg)^{(n)}.$
After the $m$th step ($m\geq 0$) we have the sum of a finite sequence of (not necessarily unequal) terms, each of the form $f^{(j)}g^{(m-j)}$ for some $0\leq j\leq m.$ The $(m+1)$th step replaces each such term with the 2 terms $f^{(j+1)}g^{(m-j)}$ and $f^{(j)}g^{(m+1-j)}.$
After $n$ steps a term $f^{(j)}g^{(n-j)}$ will appear $\binom {n}{j}$ times because there are $\binom {n}{j}$ different "paths" through the $n$ steps that will result in such a term.