A single-number estimate is a promise about things nobody knows yet. A range describes what we actually know.
When a client asks how long a project will take, the honest answer early on is a range, and the width of that range is information. A narrow range means we understand the problem. A wide one means something specific is still unknown, and we can name it.
The usual unknowns are not technical. They are whether the data is as clean as everyone believes, whether the third-party API behaves as documented, and whether the people who will use the thing agree on what it should do.
So we attack the unknowns first rather than the easy parts. One week of reading real data and talking to real users typically halves the range, which is worth far more than one week of writing code we might throw away.
We also re-state the range at the end of every increment. An estimate that never moves is not being updated with what the project has taught us, and a client who only hears the original number is being managed rather than informed.