◆ バンドルツールが内部で使うツールごとに構文解析ライブラリが異なる
  ◆ 1 つでも新構文に対応してないとエラー
◆ minify の terser が対応していないと minify しない開発用ビルドはできるけど本番用はできない

Parcel でビルドしていたものを少し修正してリビルドするとエラーが起きました
新機能を使ったわけでもなく 文字列を少し変えただけです
開発用のビルドでは問題なかったのに本番用のみエラーになります

原因を調べると terser が対応していない新構文を使ってるというものでした
ビルドするバージョンは 「last 2 Chrome versions」 を指定しています

新機能が入った頃は 1 つ前のバージョンでは対応していないので Babel で変換されるので問題ありませんでした
しかし その後 Chrome の新しいバージョンが出ると最近の 2 バージョンどちらも新構文がサポートされてるので Babel では変換されなくなります
Parcel の本番用のビルドでは terser による minify も行われますが Babel で変換されない新構文は terser で未対応のこともあります
未対応の新構文が来ると構文解析で構文エラーになります

JavaScript をパースするツールがすべて同じ構文解析ツールを使っていればいいのですが 実際にはツールごとにバラバラで新構文の対応状況も異なります
terser の場合 ESTree を使っていて ESTree では Optional Chaining はまだ対応していないみたいです
https://github.com/terser/terser/issues/643

terser で minify できるようになるまでは 「last 2 Chrome versions」 の代わりに具体的なバージョンを指定して Babel で新構文を変換するようにしたり --no-minify を指定して minify しないという対策が必要です
開発時は minify なしになっていますが それでロードが遅いと感じることもないので 見やすい状態でソースコードを見られても困らないなら minify しなくても良いかもしれません