Here is a slightly easier way:
Lemma: For every $\alpha,\beta$ the ordinal exponentiation $\alpha^\beta$ has cardinality of at most $\max\{|\alpha|,|\beta|\}$.
Now use the definition of $\omega^\kappa=\sup\{\xi^\omega\mid\xi<\kappa\}$, since $|\xi|<\kappa$ we have that $\omega^\kappa\leq\kappa$, but since $\xi\leq\omega^\xi$ for all $\xi$, $\omega^\kappa=\kappa$.
Here is an alternative way (a variation on the above suggestion):
Lemma: If $\alpha$ is an infinite ordinal then there is some $\varepsilon_\gamma\geq\alpha$ such that $|\alpha|=|\varepsilon_\gamma|$
Hint for the proof: Use the fact that you need to close under countably many operations, and by the above Lemma none changes the cardinality.
Now show that the limit of $\varepsilon$ numbers is itself an $\varepsilon$ number, this is quite simple:
If $\beta=\sup\{\alpha_\gamma\mid\alpha_\gamma=\omega^{\alpha_\gamma}\text{ for }\gamma<\tau\}$ (for some $\tau$ that is) then by definition of ordinal exponentiation $\omega^\beta=\sup\{\omega^{\alpha_\gamma}\mid\gamma<\tau\}=\sup\{\alpha_\gamma\mid\gamma<\tau\}=\beta$
Now we have that below $\kappa$ there is a cofinal sequence of $\varepsilon$ numbers, therefore it is an $\varepsilon$ number itself; now by induction we show that there are $\kappa$ many of them:
- If $\kappa$ is regular then every cofinal subset has cardinality $\kappa$ and we are done;
- if $\kappa$ is singular there is an increasing sequence of regular cardinals $\kappa_i$, such that $\kappa = \sup\{\kappa_i\mid i\in I\}$. Below each one there are $\kappa_i$ many $\varepsilon$ numbers, therefore below $\kappa$ there is $\sup\{\kappa_i\mid i\in I\}=\kappa$ many $\varepsilon$ numbers.