Sure, you could compress the current range like that. The issue, though, is that ELO is not an objective scale with absolute endpoints. It's only a measure of play strength relative to past opponents.
The fact that no current player has an ELO above 2900 does not mean that such ratings are impossible. Until 1990, no one had a rating above 2800. In fact, there's no mathematical upper bound on ELO rating at all: see this question, for example. The "big range of [unused] numbers" is infinite.
So yes, you could compress the ratings--but what do you do when someone achieves ELO 3001 in the uncompressed system? Recompress it with a different scaling factor, and change what everyone's ratings mean? And keep doing this every time someone "breaks" your current system? If the goal is to make ELO simpler to keep track of, this seems rather counterproductive. I suppose you could report log ELO
to make it more tenable (also sillier), but the fact remains that there's no mathematical bound, so there's no guarantee that all ELOs will stay within the range you're looking for.
Perhaps the most pertinent question of all is, why? What do you gain from compressing Elo down to three (ish) digits? It diminishes (slightly) your ability to distinguish between players of similar ratings, but what is the upside? Or, why not compress it down to between one and one hundred, or zero and one? It's all the same values; "three digits" is quite arbitrary, and I can't think of any way that it "improves" on the current system.