With the caveat that some players really do demand the linear railroad-track-to-awesomeville, and are disappointed if they don't get it. For those players, APs are ideal. Unless the DM is both (a) incredibly short of funds and (b) extremely talented, I have some difficulty understanding why the DM would bother to homebrew up their own linear storypath, though. And in situation (b) they should probably be looking to get their stuff published, they'll be doing better stuff than a lot of WoTC authors/designers and some Paizo ones, too!
I wanted to say something about this point, because it is interesting to me.
My group is definitely the kind of group that expects me (as the DM) to provide them interesting challenges and encounters one night a week, and they just have to figure out how to get there. A lot of it is that they understand I enjoy designing these encounters and put a lot of effort in to them, and they genuinely enjoy playing them. Our game is very much action oriented with less role play than most games probably have. And I use the combat encounters to further the plots.
In fact, I specifically asked them in an email a few weeks ago if they would prefer I tried something a little less linear to give them more freedom of choice and they all said no. They like the story I'm telling and have no desire to derail it. They even hinted that they'd rather have an NPC come up to them and tell them "there is something dangerous going on over there! Help us heroes!" than have to spend hours roleplaying to get to such an encounter, because we only have a few hours a week to play together and they just want to have fun. I don't care, as a DM, which style of game we play, so that's what I'm going to do. I'm going to offer them the kind of game they want.
As for homebrewing a linear game, I find it allows me to still interweave character elements from each of the PCs, and they can't get online and find spoilers for the encounters I'm going to run. Plus, I'm more of a fan of the delve format rather than the mega-dungeon, which is what a lot of the published APs have.
Here's kind of an example of how I try to compromise the difference:
Early in the paragon tier, my PCs were fighting a group of trolls that had invaded a nearby town. During the final battle the dragonborn warlord was killed by the huge mountain troll. As a DM I was super excited, because it was my first real kill of the campaign, and I was interested to see how the group would handle losing its leader on the battlefield, and to see what the player wanted to do now that his character was dead. After the battle, however, another player pointed out some damage resistance that the warlord had forgotten about and so, "hey! I wouldn't have died afterall!". I was disappointed as a DM, because I didn't actually get the kill (and, I'm not a particularly malicious DM, so I allowed the retroactive resistance), but I decided then and there that something was going to happend to him because he cheated me from my small victory.
What I did was have the Raven Queen start sending death squads of kenku assassins after the warlord until he convinced the group to travel to a remote temple and restore balance from having "cheated death". In the end, he wound up offering his life in service to the Raven Queen and his character evolved quite a bit because of it, but they were never really taken off the rails, all I did was adjust where the rails took them based off of another event that happened during play.
Which is basically how I choose to give my players their ability to change the story, despite the fact they don't really care if they have it or not. I plot things out ahead of time, and adjust accordingly. Sometimes those changes are big (like above) and sometimes they are much smaller. I do believe that the PCs choices and actions should have an effect on how things unfold around them, so I have to be a bit creative, because they are definitely more reactive than proactive. But, I'll freely admit that my group might be pretty odd for their preference to being lead around...
-Edit to add example-