Well, that is sort of true. SQL Server has bind variable peeking which can change the plan. And Oracle recently introduced changing plans while a statement is running. Regardless, the gist of what you wrote is true. Part of the purpose of the preparation is to generate a (somewhat generic) query plan, which does not change very often.
Other reasons include, query rewrite only engages once and a handle can be passed for each executions used instead of a statement since the same statement is reused.