There are a lot of reasons and it's generally not hey guys, lets make a short game!
Take Ghostbusters for instance, the single player was 6-8 hours. There was more planned but in an effort to actually release something fun, that meant things had to be cut. Some of this was because some parts of levels just weren't working, some levels weren't fun, time, and sometimes a long level can warm out its welcome if it's too long.
Ghostbusters use to have a Parade level which is missing from the final product. When it came down to getting the game to a finished state, we had this level that really wasn't that fun. We could spend a lot of time making it passable and completely forgetable or we could scrap it and spend that effort making other things even better.
And even in other levels there were other parts cut because they weren't fun or would take too much time which would take away from other parts of the game.
Someone mentioned MW2 specifically and while the campaign may be short and forgetable, that's fine because multiplayer is that games focus. People aren't going to be playing MW2 6 months after they purchase it to play through the campaign again and again, they're going to be playing the multiplayer.
Instead of spending a lot of time focusing on the single player, they decided to spend more time focusing on the multiplayer which is the real reason most of the people are going to buy that game anyways.