If we would do that we would then need to take care of not quoting twice.
I'll try to explain how it currently works, its quite simple. Yes, the platform constructs the DDL, based on some parameters and these may already be quoted or escaped or whatever. The platform doesnt do anything with it, except embed it into the DDL statement.
I'll try to quickly outline the process of a quoted table/column name:
1) @Column(name="`number`", ...)
2) Inside ClassMetadata/AssociactionMapping where the mapping is validated & completed, the following happens: If the column name starts with a backtick `, apply trim('`', $name) before storing the name (never store quoted names anywhere!) and mark 'quoted' => true for that column.
3) Whenever a table or column name is placed in an SQL statement *or* passed to the DBAL use one of the following methods, depending on who owns the column:
Now, SchemaTool, for example uses (or should use!) These methods when it constructs the parameters that are passed to the DBAL.
Identifier quoting is a very ugly problem and we tried to minimize the effect it has on our code. The only solid way to fix the problem of a reserved name is to change the name and not to quote it.
Of course, if you have a better idea/solution, just shoot!