It's the airline that creates the aircrafts call sign, not ATC. As an air traffic controller for 23+ years, I wondered the same thing. More than once, I have seen two different aircraft in the ATC system with the same call sign. But we had to do some fancy foot work to make it work, since the system will NOT accept different aircraft with the same call sign. The reason for the same call sign is as you would expect. One flight is late. But the on going flight, out of the city, leaves on time.
I am sure there must be cases where the call sign was changed by the airline, to avoid duplication problems, and then I would not know about it. Yet, I have seen where it was not changed. Of course, the ATC automated data system rejects the second duplicate call sign, since, there can be only one "UAL123" flight. But since the flight is actually there, it would need to be fixed. So, I would fool the data system, by adjusting the call sign. In this case, I could change it to "UAL0123". And then all would be well, since it is not exactly the same call sign, by adding a zero! And it would still fit the character size limit of 7, for all aircraft call signs. And later on down the line, somewere else in the ATC system, no one would even know, or care, that we had to adjust the call sign, for the data to process. The call sign would still look and read correctly.
I think United often uses the 4 digit flight numbers for their own internal reasons.

Ha,...I've said too much,...and no body cares....