They are all reasonable ideas, although all have drawbacks too.
Requirements are damn hard to design sensibly. Narrative requirements perhaps even harder. Alignment is the prime example of an apparently simple and sensible narrative requirement, and yet it causes hatred every time it is mentioned! I am all in favor for narrative requirements, but I believe it's best to let the DM define them, instead of hard-code them into the game.
Mechanical requirements can be hard-coded, but IMHO they should be kept simple, and easy to modify. Generally speaking, mechanical requirements can prevent some abuse but will always also prevent some legit build and allow some other abuses. There is no solution, except acknowledging that again the DM is the only person who can keep everything in check. "Maximum N classes per PC" is my favourite example because it's so simple, it tends to treat every combo equally, but then it is immediately modifyable (on individual PCs) by the DM if the group notices it's too restrictive/forgiving for their tastes.