Empty token default values -- core or extension support?
First - no need to enable Smarty system-wide to do this.  Greetings are always parsed by Smarty - see https://civicrm.org/blog/antrik/getting-started-with-new-name-and-greetings-features-in-45.

Besides that, I think you're one of the leading experts on complex token extensions, since you're the primary author of reltoken.  But I don't see why you couldn't do this.  hook_civicrm_tokenValues gives you access to the token name for parsing, and there's no requirement that the token be listed with hook_civicrm_tokens.  So I'd say go for it.

Note that this is similar but not identical to the free-form relative date work Eileen did: https://github.com/civicrm/civicrm-core/pull/12682.