So I am GMing a game for my wife. She had never played D&D before and was interested to play but afraid to play with others, at least until she has played it a little and gotten used to Role playing and general game mechanics. I started her by herself teach mechanics and it was fun but she quickly asked me "who do you play?". I laughed and told here EVERYONE but you. But despite the interaction with story board NPCs she was not getting involved with characters because she would run missions alone. Also, without support and at least another character to interact with during missions the game was lacking.
So I was faced with the same reality the OP is bring up. She needed a partner for support, emergencies, story, someone to bring up other options, and also as a method of be dropping some suggestions in character to a new player without telling her how to play and allowing her to go her own way. I needed to play it for many of the same reasons. Most of all I needed it not out shine her. I thought about it and came up with working solution.
NPC character requirements
- Minor Timid/dumb/foolish/cowardly nature : The character needs to lack the ability to lead so that her character can chart the course. However, if the NPC is timid it still needs to be willing to speak up and engage in conversation but as a more of a response not a driving force. If the character is dumb or foolish it works better if the character is not entirely clueless so you use them to interject if the player has what "appears" to be a really bad idea but you can also play on that by having "jump in front" on bad ideas so you might lose an NPC instead of your player. Demonstration through giving an example of what NOT to do not by heroically leading the way. Player starts down the hall no checks or anything, (you know the hall has 3 traps) NPC says "race you to the end!" runs into first trap, player might get a dex check to pull the NPC out of the way and be a hero or at least does not take the damage and hopefully leads the now careful path forward. Cowardly makes a character instantly not a hero no matter there states but they need to be willing to self sacrifice for he characters in order to be useful.
- Sub optimal BUT useful. So my wife is playing a high dex high wisdom High Elf monk as one might do (she doesn't know the game well enough to optimize its just what she wanted to play based on my descriptions of things which may have flavored her choses but she defiantly went strait for what she wanted.) So I built her NPC ally also as a monk because she is starting in a monastery. I didn't want high intellect, wisdom, or dexterity so that she would shine as the stealthy observant character and I wanted to make any "Master"/"Guide" intelligence character separate NPCs that she might seek for guidance but that would not travel with her. So ... I built a strength and constitution human variant monk with the healer feat. This is working great so far because when ever she is short on strength the NPC can step in to assist making it useful, also since it has low AC but high health he is the stumbling meat shield so he looks like he is being useless but is in a way saving her character by taking the damage, then as a medic he restores them both out of combat in what I make story planning the next move moments. Which due to his lack of confidence (a result of his sub par skills) he mostly defers to her. Since its out of combat in story healing it doesn't seem like a shining moment and more of a subtle assist.
- Needs to level with the players. Why? Well at lower levels the hit point difference is huge and a one shot drops the NPC out right making them useless. I tend to think its better to let the NPC take a beating then to not survive. A sub optimal, design and character flaw that discourages heroism will be enough to ensure the player(s) shine brighter. At higher levels they need to be roughly the same to stay relevant but optionally you could have multiple lower NPCs instead and allow some of them to die.
So far it is working out. Just my take on the "Ally NPC".