As you said, this all depends on league settings, but I think I can at least go into my thought-process behind my decision.
In a league where "replacement level" means exactly that (plenty of options at every position that are essentially the same), holding onto anybody for offensive production doesn't make a whole lot of sense. Sure, there's always those break-out candidates that haven't secured full playing time yet, or handcuff guys that you don't want to risk not owning, but in most leagues I play in (Yahoo) you're only dealing with around 100-120 offensive players. Players 120-150 are all essentially the same, and I see no reason whatsoever to hold onto anybody I'm not planning on using every week.
In a H2H daily league it can definitely be advantageous to keep some specialists on your roster. I'm thinking in particular about speed guys here. Guys you wouldn't normally start, but who could win you a category all by themselves if that category is in question towards the middle of the week. This is one instance where I can definitely see myself hanging onto a "bench" offensive player.
Likewise, with starting pitching, if I don't intend to use a guy every week, he has no place on my roster... that's overstating things a bit though. There are some guys you'll want around for particular matchups (especially in roto), and guys you'll roster just for multi-start weeks (in H2H). But, for the most part, I've got 4-5 SP on my roster that will be there the majority of the season, and anybody else added to that is on a temporary basis from the free agent pool.
RPs are another story. I'm a huge proponent of the bench-RP strategy. I'll typically dedicate 3-4 spots on my bench, almost regardless of league type/size/setup/rules, just to middle relief and closers-in-waiting. First, it gives you a leg up in the arms-race that is bottom-tier closers as the season goes on. If you've got Bard/Gregerson/Kuo/etc rostered before their respective closers go down you don't have to be up on the WW at 3AM trying to scavenge some saves. Secondly, as long as you've got daily moves, "P" spots are perfect for getting "free" innings out of guys who are generally good ratio guys and will pile up Ks in the long run. I'd much rather dedicate 6-10IP per week (admittedly babysitting my roster a lot) to three or four cycling MR guys (who nobody else in the league is even paying attention to), rather than a #5SP who is going to kill your ratios and probably not get you any more Wins or Ks over an entire season.
In general, unless the league particularly allowed multiple catches but limited GP to 162, I'd never consider rostering two catchers. If I own one of the top-name guys (Mauer/Posey/Santana/VMart/McCann) and he was injured but not on the DL I'd consider it. Other than that, I'm perfectly fine with cutting whoever I've got and replacing them off the WW.
H2H Bench: Speed Guy (OF?), IF-handcuff/prospect/part-timer, RP, RP, RP, RP
Roto Bench: Prospect, RP, RP, RP, RP, RP
Now, if I played in a league where "replacement level" is essentially the dividing line between players who get PT and those who don't (AL/NL-only, deep rosters, etc), then I'd strongly consider rostering more bats... I haven't had the pleasure of playing in a league that deep though.