Por fim, encontrei uma solução, mas parece um hack. Eu só queria postar aqui para os outros até que chegue uma solução melhor.
Convertendo o arquivo kernel-opts da questão em UTF-16 (unicode) e usando-o em vez disso, consegui resolver o problema. Eu também tive que soltar os dois primeiros bytes do arquivo convertido; Não tenho certeza porque iconv adiciona esses bytes. Eu usei o seguinte comando para converter para UTF-16.
iconv -f ASCII -t UTF-16 kernel-opts | dd bs=1 skip=2 > kernel-opts-unicode
Em seguida, apaguei as entradas de inicialização antigas, inicializei novamente no UEFI Shell v2 do Live CD e executei os seguintes comandos.
bcfg boot add 0 fs1:\vmlinuz-linux "Arch Linux"
bcfg boot -opt 0 fs1:\kernel-opts-unicode
Isso produziu a seguinte entrada de acordo com efibootmgr -v
Boot0000* Arch Linux PciRoot(0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)/Sata(1,65535,0)/HD(2,GPT,e5f7abe4-75bf-4c63-a76b-504c17eb5460,0x1000,0x200000)/File(\vmlinuz-linux)r.o.o.t.=./.d.e.v./.m.a.p.p.e.r./.d.e.f.a.u.l.t.-.r.o.o.t. .r.w. .i.n.i.t.r.d.=.\.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g.
O sistema foi capaz de inicializar sem nenhum aviso ou erro.