Here's my preferred proof:
First, note that $A$ and $A^TA$ have the same rank, since these matrices have the same nullspace. In particular: clearly, $Ax = 0 \implies A^TAx = 0$. On the other hand,
$$
A^TAx = 0 \implies x^TA^TAx = 0 \implies \|Ax\|^2 = 0 \implies Ax = 0
$$
Then, note that for any product of matrices, $rk(PQ) \leq rk(P)$. Thus, we have $$
rk(A) = rk(A^TA) \leq rk(A^T)
$$
on the other hand, applying the same argument to $A^T$ yields
$$
rk(A^T) = rk(AA^T) \leq rk(A)
$$
So, we can conclude that $rk(A) = rk(A^T)$, as desired.
Another approach:
Begin by showing that the (column-)rank of and $m \times n$ $A$ is the smallest $r$ such that there exist matrices $P \in \Bbb R^{m \times r}$ and $Q \in \Bbb R^{r \times n}$ such that $A = PQ$; we can call $A = PQ$ a rank-$r$ factorization of $A$.
Now, the row-rank of $A$ is the column rank of $A^T$, which can be defined similarly. However, whenever $A = PQ$, we have
$$
A^T = (PQ)^T = Q^TP^T
$$
which is to say that if $A$ has a rank $r$ factorization, then $A^T$ also has a rank $r$ factorization. Conclude that $rank(A) \leq rank(A^T)$. Since we also have $rk(A^T) \leq rk(A^{TT}) = rk(A)$, we can conclude that the ranks are equal.