empty optional fields: saved node contains the token name instead of an empty section
I have figured it out with my own custom module:

function mymodule_tokens_alter(&amp;$replacements, $context) {
    if ($context['type'] == 'node') {
        $keys = array_keys($context['tokens']);
        foreach ($keys as $key) {
            if (isset($context['tokens'][$key]) &amp;&amp; !isset($replacements[$context['tokens'][$key]])) {
                $replacements[$context['tokens'][$key]] = '';
            }
        }
    }
}