I has to be vastly more difficult and involved to build a non-linear plot that that still has balanced game play.
I've heard an argument, and I think that it has some validity, that the so-called non-linear plot in BG2 had some logical holes in it. The argument goes like this....
OK, you've escaped the dungeon and you've got to find Imoen. Sure, you have to earn enough gold to pay off the shadow theives. But after that are you REALLY going to go on all of those side quests (for whatever noble or mercenary reasons) or are you going to go rescue Imeon?
Sure, from a game-playing perspective, the vast number of side quests were really fun and they really helped build up your XP and levels so that you were tough enough to rescue Imoen and take on Irenicus. But from a strict story perspective, they were conceptually weak. Oh, sure, you could have gone right after Imeon ASAP with the minimum of side quests. But then what's the reason for doing the side quests after you've escaped from the Underdark? I want to take a couple months off my Irenicus quest (and the hunt for the Rynn Lathorn for the elves) to go do some side quests?
Plot issues aside, the side quests do add considerable playability since there's no requirement on the order in which you do the side quests.
Regarding playable NPC's. They add another large level of complexity to the game. Every one of those in-party NPC's has to have all of the various conversations scripted and placed on timers so that they occur at the proper time, and if the right combination of NPC's exists. Blah, blah, blah. It's a tremendous amount of work.
Furthermore, there's a LOT of players that simply like to create their own characters and will never be happy with the NPC's that the game provides. Think about it. How many people griped that there wasn't a monk NPC in BG2? Or a decent thief to add after Yoshimo's treachery? Or a sorceror? Etc., etc., etc.
Personally, I wish that they have given a middle course a try. Perhaps a small number of joinable NPC's that had no conversations between each other (to simplify matters). Only a small number of conversations with the party leader or while talking to certain non-joinable NPC's. Any of the little home bases that you use along the way would be good places to add such NPC's (Targos, Wandering Village, Drow camp, Kuldahar).
Another alternative would have been straight out of the old gold box SSI DnD games. The temporary, joinable NPC. This NPC would only join and stay with your party while you remained in a certain area. For example, maybe Nathaniel would join you while you cleaned up the Kuldahar problem, but after you head off for Dragon's Eye, he says that he cannot leave Kuldahar. Perhaps such a character should be controllable in battle, but you cannot remove any of his equipment.
These are just a few thoughts and ideas on the matter. Take them for whatever little they're worth.