That is correct, the project loader does not replace variables, and for the sake of performance, I think it shouldn't, either. Variable replacement is something that takes a non-trivial amount of CPU-time.
It is very well possible to build templates without using variables in units, so there is no urgent need for this, either.
Those variables are thought to give you some flexibility during the build process, not to define the layout of a new project. If you want to make the layout customisable, use a template script (this is supported). That will evaluate once, not at every startup, which is better.