Additionally, the SQL in a stored proc isn't stored in ready-to-use executable form, it still has to be converted to an execution plan at runtime, which is exactly the same as a dyn. parameterized query. (see sqlserver books online) The execution plan is cached for both, so if a similar statement comes along, the same execution plan is used.
i.o.w.: as soon as the dyn. parameterized query is loaded into the db it takes the same route as when the stored proc's sql is loaded into the db.