const result = arr.reduceRight((acc, n) => ({ [n]: acc }), {});
или
let result = {};
for (let i = arr.length; i--;) {
result = { [arr[i]]: result };
}
или
const result = (function createObj(i) {
return i < arr.length
? { [arr[i]]: createObj(-~i) }
: {};
})(0);