Проблема в том, что js в шаблонах Vue 2 - это не совсем js, а особый сабсет, обрабатываемый vue-loader'ом(посредством vue-template-compiler'а). Соответственно, никакой babel к нему не применяется, а писался он до того как придумали optional chaining. Как раз из-за таких подлянок в Vue 3 отказались от такого подхода(а за одно выкинули фильтры, собаки).
Быстрый поиск сразу выдал
vue-nullable-loader - эта хрень на регулярках, а не на анализе AST, так что возможны глюки, но в целом должно работать.
P.S. Вообще странно, что никто не сделал этого как module для vue-template-compiler...