This really all comes down to the type of game you're making, and what you'd like to (/have time to) add, in order to promote this growth.
From the standpoint of making something like a traditional RPG, take a tip from Fallout 1 (NOT 3, whatsoever):
Build a game in which it is impossible to do everything with one character.
Build a game which doesn't support "classes", but rather customizations -- as the player customizes, open doors and paths and bonuses for those customizations (/modules/attributes/etc).
However, limit the AMOUNT of modules/perks/bonuses/boosts/etc, so that a character MUST either be semi-specialized, or suffer the penalty of being a very underpowered jack-of-all-trades, who has limited/no access to the additional content.
In the level/quest design phase, make it clear that a particular skill/stat/attribute (or one of a set, or several in conjunction) must be used, in order to access that content.
(eg: to go on a specific quest with a modern-day Robin Hood, you must have 75% lockpick, 60% speech, agility of 8 and a perception of 6).
Make it clear, as you pass each of these checks, that a user DOES need to meet these requirements.
Have entry to another quest be based on picking up the back end of a car, and moving it out of the way...
...or based around having a carry-weight of more than 300lbs...
These are things which would appear to the player as something they CAN do, in a meta-gaming sense, but CAN'T do with their current player, without coming back 20 levels later, and dedicating all of the rest of their stat-points to.
In terms of weapons and gear and crafting, you can apply the same concepts...
Looking at WoW and Diablo II, the kings of gear-grubbing (great retention-rates, too).
Instead of making gear have class-requirements ("only druids can wear this pair of gloves"), have gear be based on:
a) stat-requirements ("Boots of Sneaking [req: sneak <= 50%]")
b) att-requirements ("Goggles of Grokking [req: INT <= 7]")
c) story-requirements ("Sword of Swords [req: 'Quest of Awesomeness' -- must have DEX > 4 STR > 7 to begin quest]")
If you put an item-crafting element into the game, from there, you should be able to auto-generate stat/att requirements, based on, say, the components used to make the item (or used to enchant/patch the item), their quantity, if they have different potencies, et cetera.
Now you have gear that ANYBODY can use...... IF THEY HAVE THE ABILITY TO USE IT, or let them use it anyway, but apply a penalty to misuse.
Give everybody the ability to use a minigun, but if they don't meet the strength requirement, then slow their movement speed by
req_str - player_str units of movement per turn (or a multiplier, depending on what a move-unit might look like in your game).
Give everybody the opportunity to use a sniper rifle, but without high perception and agility, make it impossible to hit anything...
The point of the whole thing is that if you want to foster replayability with characters who are unique, then you want to limit what each character is allowed to do.
Therefore, each character with different skill-sets will have different advantages and disadvantages.
Just be sure to spend a lot of time balancing them, and make sure that every major quest point is solvable in at least 3 or 4 different ways, based on characters who MUST play to match their skills, and make side-quests accessable in only 1 or 2 or 3 ways:
Not every character needs to access all content, and instead of thinking about adding class-specific stuff, think about removing access to things based on character-weaknesses.