JSTL, as its name implies is an attempt by Sun to minimize the number of custom tags that need to be written by standardizing the most common tasks that programmers usually write custom tags to do.
Before JSTL, if you wanted tags that branch or loop over a collection, you had to either write them yourself or adopt one of the many frameworks out there that provide them for you. This causes a lot of duplication of effort and meant that the tags used for these things varied greatly from company to company. With a standard set, it is easier to write scriptless JSPs without having to re-invent the wheel over and over again.
There are still plenty of cases where it make sense to write your own tags but the JSTL should cover most of the common cases.