October 8th
Today I learned a nice argument that if all roots of a polynomial $P(x)\in\ZZ[x]$ have magnitude no more than $1,$ then they are all either $0$ or roots of unity. Factor $P(x)$ over $\CC$ as\[P(x)=\prod_{k=1}^n(x-\alpha_k).\]Note that all of the $\alpha_\bullet$ are algebraic integers. The main player in this proof is the sequence of polynomials\[P_m(x)=\prod_{k=1}^n\left(x-\alpha_k^m\right).\]Essentially, it is necessary and sufficient to show that, eventually, these polynomials cycle their roots—if they're all roots of unity or $0,$ then taking the least common multiple of all the periods will give us an $M$ so that $P_{M+1}(x)=P(x),$ for example.
For this, we show there are only finitely many options for the $P_m(x),$ which we can do by showing that the coefficients live in $\ZZ[x]$ and bounded. For $\ZZ[x],$ note that $\ZZ=\overline\ZZ\cap\QQ,$ so it suffices to show that $P_m$'s coefficients live in both $\overline\ZZ$ and $\QQ.$ The former isn't difficult: observe that a full expansion of\[P_m(x)=\prod_{k=1}^n\left(x-\alpha_k^m\right)\]will give coefficients that are all finite sums of finite products of the $\alpha_\bullet^m.$ But $\overline\ZZ$ is a ring, and we know each $\alpha_\bullet\in\overline\ZZ,$ so these coefficients must be in $\overline\ZZ$ as well.
To show that the coefficients are in $\QQ,$ we think about $P_m(x)$ in the splitting field $K/\QQ$ of $P(x).$ This extension is Galois, so we can show that for each $\sigma\in\op{Gal}(K/\QQ)$ fixes the coefficients of $P_m(x).$ Because this is the splitting field of $P(x),$ $\sigma$ must permute the roots $\{\alpha_\bullet\}$ of $P(x)$ (as a multiset), so $\sigma$ also permutes the roots $\{\alpha_\bullet^m\}$ of $P_m(x).$ In particular, $\sigma(P_m(x))=P_m(x),$ which is what we wanted.
So far we know that $P_m(x)\in\ZZ[x].$ To show bounded coefficients, we again look at\[P_m(x)=\prod_{k=1}^n\left(x-\alpha_k^m\right)\]and imagine a full expansion. For the coefficient of $x^d,$ there are $\binom nd$ ways to choose $x$s, and this gives $\binom nd$ terms summing to the coefficient of $x^d.$ But each term is a product of $\alpha_\bullet^m$s, which all have magnitude no more than $1,$ so each of the $\binom nd$ has magnitude no more than $1.$ So we get to bound each coefficient, using the triangle inequality by\[\binom nd\cdot|1|=\binom nd.\]Importantly, this bound is independent of $m.$
Now we get the payoff for the above lemmas. The coefficients of each $P_m(x)$ are all in $\ZZ[x]$ and bounded in magnitude, so there are only finitely many polynomials that the $P_m(x)$ can be. In particular, we must eventually have $a$ and $b$ give $P_a(x)=P_{a+b}(x).$ Waving my hands around the multiplicity problem a bit, we see that the multiset of roots of $P_a(x)$ and $P_{a+b}$ must be the same, there is a permutation $\sigma\in S_n$ such that\[\alpha_\bullet^{a+b}=\alpha_{\sigma(\bullet)}^a\]for any of the $\alpha_\bullet.$ In particular, we have that\[\alpha_\bullet^{a+n!b}=\alpha_{\sigma^{n!}(\bullet)}^a=\alpha_\bullet^a\]because the order of $\sigma$ divides $|S_n|=n!.$ But the only roots of $x^{a+n!b}-x^a$ are $0$ and roots of unity, so each $\alpha_\bullet$ must be $0$ or a root of unity.