The problem is ls. It was never designed to be used in scripts. Besides, it's also pointless to use ls in scripts, because the shell can do the job much better, by simply using a glob, see
http://mywiki.wooledge.org/BashGuide/Patternszenlist="/tmp/zen list"; touch "$zenlist" "$zenlist"$'\neven with a newline'
zenity --list --title='A single-column List' --width=600 --height=450 \
--column='Spaces are allowed within "q u o t e s"' \
"How much wood would a woodchuck chuck," \
"if a wooodchuck could chuck wood?" \
"$zenlist"*
And for a general way to put list items with spaces and other chars into a "variable", use bash arrays.
# assign some items to start with
items=( "How much wood would a woodchuck chuck," "if a wooodchuck could chuck wood?" )
# append some items
items+=( "$zenlist"* )
zenity --list --title='A single-column List' --width=600 --height=450 \
--column='Spaces are allowed within "q u o t e s"' "${items[@]}"