С минимальными изменениями можно сделать вот такой рабочий вариант:
#!/bin/bash
function generateArgs(){
echo --arg1=$somevar1 \"--arg2=$somevar2 and spaces\" ... --arg1337=$somevar1337
}
eval "args=($(generateArgs))"
exec java "${args[@]}"
Т.е. каждый отдельный аргумент в котором могут быть пробелы вывести с кавычками и собрать их в массив. Элементы массива в подстановке
"${args[@]}"
передаются поотдельности и пробелы внутри них обрабатываются правильно.
Но это, конечно, коряво и лучше переделать функцию, чтобы она собирала массив аргументов по-человечески.