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) $$