There is a bug with property resolving when calling archetype:generate mojo. Default property value provided in archetype descriptor hides the value passed as parameter to mojo.
Generation stops and asks for value of property foo although it was passed as parameter.
I have attached example archetype and patch that solves this issue.
Please review and focus on suspicious line (112 before patching, 116 after patching).
Basically the default value from metadata should be ignored, when value is explicitly set.
Handling nested tokens is a different story...