- Make things easier ... This is the one we're all the biggest fans of. Ain't it great when a framework turns hundreds of lines of code into a dozen? That's why Rails is so popular. There is tremendous tangible evidence of what the framework is doing for.
- Incremental improvement ... We've all got our favorite frameworks, and we always wind up finding the warts in them. You inevitably find yourself saying "the guys who wrote this framework should've just done X, Y, and Z. Then it would be perfect." This leads to somebody doing X,Y, and Z. You could probably fork, but it's so much more glamorous to claim your own territory. All the Struts clones like Spring MVC and Stripes are great examples.
- Port ... A lot of frameworks are just ports of other frameworks from other languages: NHibernate, Grails, even Cake for that matter. Sometimes it's somebody's way to prove that thier language is still better than that other language, or maybe they've just been forced to write in some other language and miss their favorite framework.
- Solving hard problems ... These are the least glamorous kind of frameworks. They take on really hard problems and try to solve them, or at least make some progress. There's no Hello World fluff in these frameworks. They may not be easy to use, heck they might be really hard to use. Google Web Toolkit is a pretty good example of this kind of framework, though it also seeks to make some things easier (a la #1.)
What do you look for in a framework?