As $\pi_*$ is surjective,
$$\dim \ker \pi_* = \dim TG_p$$
and we only need to show $TG_p\subset \ker \pi_*$.
For any vector $X\in TG_p$, choose a curve $c$ in $G_p$ representing $X$, ie $\dot c(0) =X$. By definition, $\pi_*X=(\pi\circ c)^\cdot(0)$ and thus $\pi_*X=0$ as $\pi\circ c=p$ is constant.
Written in terms of derivations as was done in the question, this reads
$$ \pi_* X[g] = X[g \circ \pi] = \frac{\mathrm{d}g(\pi(u(t)))}{\mathrm{d}t}\Bigl|_{t=0} = \frac{\mathrm{d}g(p)}{\mathrm{d}t}\Bigl|_{t=0} = 0 $$
If you do not want to argue by dimensionality, you'd still have to show $\ker \pi_*\subset TG_p$, ie find a curve in $G_p$ representing any arbitrary vector from the kernel, which is easy after choice of trivialization:
Just take an associated chart $x^\mu,g^k$. Then, the local expression of $\pi_*$ is just
$$ X^\mu\frac\partial{\partial x^\mu} + X^k\frac\partial{\partial g^k} \mapsto X^\mu\frac\partial{\partial x^\mu} $$
so that any $X\in\ker\pi_*$ can be written as
$$ X = X^k\frac\partial{\partial g^k} $$
A corresponding vertical curve is parametrized by
$$ t \mapsto (x^\mu, g^k + t\cdot X^k) $$