◆ エクスポートされるのは一つのインスタンスだけでクラスなどはエクスポートされない
◆ 基本はひとつのインスタンスしか使わないから new しなくてもすぐに使える
◆ メソッドに新しいインスタンスを作るものがあって別の設定のインスタンスと共存できる

モジュールをエクスポートするとき たいていはプロパティがいろいろセットされたオブジェクトやひとつのクラスだと思います
使う側はこのようにプロパティの関数を使ったり インポートしたクラスを new したりが基本です

import a from "./a.js"
import B from "./b.js"

console.log(a.create(10))
console.log(new a.Class(10))

console.log(new B())

今回はたまたま珍しめの ひとつのインスタンスをエクスポートしてるものを見つけました
いっぱいインスタンスを作るならともかく 基本ひとつしか使わないなら new する手間も省けて楽ですからね
ひとつのインスタンスだと class を new するのではなく 単純にオブジェクトを作って export してるのも一緒です

export default {
value: {},
add(k, v){
this.value[k] = v
},
print(){
for(const [k, v] of Object.entries(this.value)){
console.log(k, v)
}
},
}

でも

export default new class {
constructor(){
this.value = {}
}
add(k, v){
this.value[k] = v
}
print(){
for(const [k, v] of Object.entries(this.value)){
console.log(k, v)
}
}
}

でも 基本使うときは同じです

今回 「ひとつのインスタンス(下側のこと)」と書いたのは メソッドの一つとして新しいインスタンスを作る機能があったからです
それならクラスをエクスポートで良さそうですが インスタンスがエクスポートされてそのメソッドで新規インスタンスが作れました
そのインスタンスのクローンかと思いきや 完全新規作成のインスタンスで設定類も初期化されたものが作られました

こういう感じです

export default new class {
constructor() {
this.values = { a: 1, b: 2 }
}
new() {
return new this.constructor()
}
copy() {
const inst = this.new()
inst.values = JSON.parse(JSON.stringify(this.values))
return inst
}
}()

動かしてみるとこうなります

import x from "./x.js"

x.values
// {a: 1, b: 2}
x.values.c = 3
x.values
// {a: 1, b: 2, c: 3}

const y = x.new()
y.values
// {a: 1, b: 2}

const z = x.copy()
z.values
// {a: 1, b: 2, c: 3}
z.values.a = 10
delete z.values.c
z.values
// {a: 10, b: 2}
x.values
// {a: 1, b: 2, c: 3}

new メソッドでは設定が引き継がれず copy メソッドでは引き継がれます
コピーはともかく new はここに作る必要あるのかなと思いましたが 基本はひとつのインスタンスだけで即使えることを優先するとこっちのほうが良い のかもしれません