Why not generate the SSN directly on the server?
Data minimization: generating it in the browser keeps the value from crossing the network unnecessarily, which is exactly why this tool runs entirely on the client.
Can a synthetic SSN collide with a real person's number?
It is structurally possible, because the generator only avoids the ranges the SSA never used, without checking which numbers were actually issued. The Woolworth-wallet case shows this already happened at real scale.
What makes something a direct identifier, and does the SSN qualify?
A direct identifier singles out a person on its own, with no other field needed alongside it. The SSN qualifies because it is used in isolation for credit, employment and tax filing in the United States.
Why mask a synthetic SSN if it is not even real?
Because the discipline prevents accidentally reusing that same unmasked code path later on a route that ends up handling a genuinely real value.