The basic idea is that in a language built on a one-letter alphabet, every sufficiently long word is a concatenation of shorter words. So when you take a word w in L∗, i.e. a concatenation of words in L, there is a core L˚ such that w is a concatenation of words in L˚. Thus L∗=L˚∗. It turns out that L˚ is finite, hence it and L∗ are regular.
Let M be a subset of L and w a word in L. w can be expressed as a concatenation of words in L iff |w| can be expressed as a sum of elements of S⊂N where S is the set of lengths of words in M. Thus the problem reduces to expressing an integer as a sum of integers in a particular set (with repetitions allowed): can |w| be expressed as k1s1+…+kmsm∀i,si∈Sk1∈N?
This is a well-known problem in arithmetic, and the answer is that if the coefficients (ki) can be negative (ki∈Z), |w| is expressible iff it is a multiple of the greatest common divisor of the elements of S: gcdS. With a requirement for non-negative coefficients, this still holds for sufficiently large |w|.
Consider the infinite sequence (gi)i≥minS defined by gi=gcd(S∩[0,i]). This is a decreasing sequence of integers (starting with gminS=minS, so it is constant after a certain index j; and gj=gcdS. By the Chinese remainder theorem, every element of S can be expressed as k1s1+…+kmsm with ∀i,ki∈Z and {s1,…,sm}=S∪[0,j]. If x∈S and x≥s1⋅…⋅sm then you can pick all non-negative coefficients.
Enough arithmetic. Let L˚={w∈L∣|w|≤gj}. Every word in L can be expressed as a concatenation of words in L whose length is at most gj, i.e. L⊆L˚∗. Since we also have L˚⊆L, we have L∗=L˚∗, which is regular since L˚ is finite hence regular.
Alternatively, use the characterization of regular languages in single-letter alphabets.