It's all tires.
Through their arrogance, Ferrari has managed to screw themselves. For the past five seasons they've had an "exclusive" testing arrangement with Bridgestone. The Ferrari was essentially built around those tires, with close coordination betweent the Ferrari and Bridgestone engineers. The other Bridgestone teams contributed to that testing, but didn't receive the feedback that Ferrari did. That's they've been faster than anybody else for the last 5 to 8 years.
Meanwhile, Michelin came in with a decent tire in the last couple seasons and some teams started migrating. By the time the FIA changed the rules for this year (meaning no tire changes for the race), the Bridgestone runners were reduced to Ferrari, Jordan and Minardi (the last two being the slowest teams on the grid). So, all during winter testing, Bridgestone and Ferrari only had data from three teams (one competitive). The rest of the grid had thousands of miles more testing on their Michelins, so they were able to develop a better tire. As the season progressed, it was more of the same - they are constantly developing new tires for each race, and if you get behind there's no catching up.
The Indy thing was a fluke. Either Bridgestone hit upon the right tire construction, or they had the same problem with their tires too, but it wasn't as evident because there aren't as many runners.