Well, a d20 is basically a percentile dice that works in 5% increments. So unless you have a pressing need to calculate with greater granularity than that, the d20 gets the job done.
As for why you'd pick it instead of the percentile, there are two possible reasons. First, it keeps things consistent with the rest of the game, and there's value in that. Second, the d20 system scales more easily as characters gain in level. The percentage chance of success at a given task changes as the character's skill level increases in comparison to the static task DC. In a percentile system you have to recalculate the math as you go.
Did that last bit make sense? Let me give a quick example.
In a d20 game, if a task is a DC 25, and you start with a +5 to your skill check, you begin with a 5% chance of success. As your skill check improves in 5% increments at a time, you get a 10%, then 15%, and so on over the life of your character. But what you do remains the same- roll a d20, add your skill check number, and see if you meet or exceed 25.
In a percentile game, things are a little different, and in my opinion a little more unwieldy. You generally have to roll below (or above) a target number that reflects your chance of success. So to model what we just modeled, you'd start out needing to roll a 5 or below, then a 10 or below, and so on as your character grew in ability. But how do you know that the target number needs to be a 5 at one point, then a 10, and so on and so forth? You need some additional algorithm to generate that target number. And that adds an additional bit of complexity that isn't evident in a simple "roll d20, add modifier from character sheet, see if you meet or exceed the target" system.
Of course, a percentile system can model things in ways a d20 cannot. If you created an algorithm to generate a bell curve, you could do that (3d6 would be faster and just as good though). Or you could do a logarithmic curve of some kind with the appropriate algorithm.