◆ "" みたいなもの
◆ "" は文字列になるので 変数名を参照するときに [] を使う
◆ 半角スペースが区切り文字になるので 変数名に半角スペースがあるときに必要

Handlebars はこういう感じで使えます

Handlebars.registerHelper("dump", (...a) => console.log(a))
Handlebars.compile(`{{ dump 1 "a" true }}`)()
// (4) [1, "a", true, {…}]

ヘルパ名のあとに値を書けばヘルパに渡されます
ちゃんと 1 は数値型で true は真偽値型になってます

なので JavaScript の値をそのまま書けるのかなと思って

Handlebars.compile(`{{ fn value [item1, item2] }}`)(data)

と書いたのですが うまく動いてませんでした

上で書いた dump ヘルパで見て見ると value は正常でしたが 配列部分は undefined になってました
なぜ undefined なのかよくわからなかったので Handlebars.parse でパース結果を見てみました

Handlebars.parse(`{{ dump value [item1, item2]}}`)

{
type: "Program",
body: [
{
type: "MustacheStatement",
path: {
type: "PathExpression",
data: false,
depth: 0,
parts: ["dump"],
original: "dump",
loc: {
start: {
line: 1,
column: 3,
},
end: {
line: 1,
column: 7,
},
},
},
params: [
{
type: "PathExpression",
data: false,
depth: 0,
parts: ["value"],
original: "value",
loc: {
start: {
line: 1,
column: 8,
},
end: {
line: 1,
column: 13,
},
},
},
{
type: "PathExpression",
data: false,
depth: 0,
parts: ["item1, item2"],
original: "item1, item2",
loc: {
start: {
line: 1,
column: 14,
},
end: {
line: 1,
column: 28,
},
},
},
],
escaped: true,
strip: {
open: false,
close: false,
},
loc: {
start: {
line: 1,
column: 0,
},
end: {
line: 1,
column: 30,
},
},
},
],
strip: {},
loc: {
start: {
line: 1,
column: 0,
},
end: {
line: 1,
column: 30,
},
},
}

body.params のところです
value と同じ PathExpression になっていて 「item1, item2」 が分割されるわけでもなく parts に入ってます

ということは

Handlebars.compile(`{{ dump value [item1, item2] }}`)({value: 10, "item1, item2": 20})
// (3) [10, 20, {…}]

「item1, item2」 をそのまま名前にしたら取得できました
Handlebars の [] は配列ではなく 変数名にスペースがあるときに 1 つの名前とわかるように囲むもののようです
コマンドラインの "" みたいなものですね

わかりやすくドキュメントに書いてればいいのですが Handlebars のドキュメントは読みづらい上に情報が足りてないんですよね
デコレータ関係も API にはあって 使ってる例もあるのにどういうものなのかの説明が全然ないですし