AFAIK, stored values or parameters can't be used to stand for tables in queries that create tables or change table schemas--that is, CREATE, ALTER, DROP--but only in SELECT, INSERT, or UPDATE.
The principle is that the query engine must be able to compile the whole query (or command sequence) before it begins execution.
It can't do that in cases where tables either do not exist at the start of the code, or will change within it.
Actually from memory, it is more subtle. A CREATE statement must fail, for the reason just given. In practice, DROP <component> also answers itself.
The subtlety is that each time a table is ALTERed (explicitly, without using a stored value or parameter), any previous references persist but continue to use the previous schema. This affects SELECT, INSERT and UPDATE queries as well--so care should be taken to recreate references to tables after they are changed.
I need to check these comments, please bear that in mind.