Coming back to this question after a few years, I've found a simpler proof, using only basic linear algebra knowledge.
First, if $\operatorname{rank}(A)=n$, use the facts:
- Matrix is full rank iff it is invertible
- Product of invertible matrices is invertible
so $\operatorname{rank}(A^{k})=n$ for any natural $k$.
Otherwise, use induction to show the following:
if $rank(T^k) = rank(T^{k+1})$ for some positive integer $k$, then $rank(T^k) = rank(T^m)$ for all positive integer $m \geq k$.
Finally, we have to show that if $n \gt \operatorname{rank}(A)$, then $rank(A^k) = rank(A^{k+1})$ for some $k\le n$.
$$
rank(A^k) = \dim(\operatorname{im}(A^k))
$$$$
\operatorname{im}(A) \supseteq \operatorname{im}(A^2) \supseteq \operatorname{im}(A^3) \supseteq \dots
$$
$$
n \gt \operatorname{rank}(A) \ge \operatorname{rank}(A^2) \ge \operatorname{rank}(A^3) \ge \dots \ge \operatorname{rank}(A^n) \ge \operatorname{rank}(A^{n+1}) \ge 0
$$
There are n possible values ($0,\dots,n-1$) for n+1 ranks, so there are at least two ranks that are equal.