Well, okay, there's no magic number. But I like the number three. That's how many choices I try to give whenever players hit a non-skill-based moment.
There's a lot of these moments in a lot of different games. Choosing whether to take a left or a right in a dungeon. Choosing whether to save someone or rob them. Choosing whether to buy a sword or a bow. Choosing what building to build, what party members to take, and so on.
What I mean by "non-skill-based" is kind of iffy. After all, there's skill in equipping your party or building a building or even choosing left from right. But it's not the primary play skill. Whereas the primary play skill needs to be deep and diverse, secondary choices are usually less about skill and more about personal preferences. If there is a best choice, then why offer the others?
These choices are very important to a player's sense of agency - his sense that his choices affect the game world. The going idea is that a player should be able to do as many different things as he wants. This leads to games like Grand Theft Auto, where you can run around and go just about anywhere whenever you want. Of course, this has side effects that you may not like.
First: Because you are offering such a wide ability to choose, you are essentially turning that facet of the game into a primary play skill. In GTA, knowing where things were and how to navigate the map was an important play skill, unlike in most other games, where navigating the map is simply a way to get a breather between today's plot event and tomorrow's plot event.
Second: For various reasons, navigating space/plot in a freeform manner generally results in an extremely shallow set of results. The typical response to this is to seed the map with random fun stuff that has little to do with long-term play. A nifty weapon, a fun comment, a shiny car. These things reward players who decide to participate in the shallow (but broad) play you give them without actually requiring complex long-term play changes.
Third: Has high development cost.
(See? Three choices of poison. I like three.)
Taking the "cheap" way out, and giving them only a few choices, is generally a more effective way to actually give players agency. A good example of this is a game where you can choose out of three approaches to any given problem (typically, stealth, fighting, and magic/ranged/social). In this case, even though the end results are essentially the same (beat the level), the ability to choose an approach gives the player a lot of agency.
Of course, the "cheap" way comes with its share of problems.
First: Insufficient options. A lot of times, the choices you offer will simply not appeal to a player. This is especially true of dialogue trees. Trying to provide choices to please everyone is a bit like trying to lift a couch with a toothpick. Even if you're incredibly skilled, the method is simply not suitable.
By making options "in-game" rather than "breaking the fourth wall", you can reduce this problem hugely. For example, offering weapons in-game and letting the player choose which weapon he wants is much better than asking him whether he wants to be stealthy or brutal.
Second: "Gilded Cage" issues. When a player is made to choose from too few artificial choices or artificially restricted in some way, it really steals away the agency and can be very irritating. This is especially true of dialogue trees. Every drawback is especially true of dialogue trees. :P
Some games try to provide a huge number of options while either making them all equate to the same few choices or while making the vast majority of the options so obviously unappetizing that nobody would choose them. This works pretty well for live games like tabletops where there are no such things as saves or second play-throughs, especially because if they do choose some wacky thing, you can always make stuff up. But this is difficult to do with a computer game, since players will often try everything and quickly figure out that you're offering meaningless choices.
You can reduce this, to some extent, by using the same "in-game" techniques explained above.
Third: Exponential growth. Given two or three distinct choices that have different results, you quickly run into The Branching Tree of Doom. There are effectively three ways to keep this from getting ridiculous. You can have choices have numerical rather than plot results. You can have choices lead to different paths that always go to the same endpoint. And/or you can have some kind of algorithm for determining outcomes based on any given choice, which minimizes scripting by adding ridiculous amounts of engine programming.
Anyhow... that's basically it.
Ahhh... I said I was going to link it up to social games and MMORPGs but, you know what? I'll have to do it in a different essay. This one's already too long.