Also the stored proceudres are compiled by database so they run very quickly (after first call) compared to striaight commandtext queries
Well, usually. If the S/P is going to take a long time to run (> 5 sec, say) then having a precompiled query plan is less important than getting it done right every time, so dynamic SQL doesn't lose much to a stored proc in this instance. It's also less important when (e.g.) an index is not evenly distributed: some queries will resolve well and some not using the same query plan.
Bear in mind that cost-based optimizers don't spend very much time thinking about query plans: small fractions of a second - if they go over their time budget they'll stop and use the best plan found so far.
I'm not saying you're wrong - just that it's not a hard-and-fast rule and developers should be aware of the kind of situations where the approach is suboptimal.
Mike