Bash: pasa la variable como un solo parámetro / parámetro de cotización de shell

Estoy escribiendo un script de bash que tiene que pasar una variable a otro programa:

./program $variable

El problema es que es absolutamente necesario que $ variable se pase como un solo parámetro, lo cual no es el caso si contiene espacios en blanco.

variable=Hello World
./program $variable
-> program receives two arguments: 'Hello' 'World'

Citarlo no hace nada en absoluto (bien hecho, bash devs):

variable=Hello World
./program "$variable"
-> program receives: 'Hello' 'World'

Doble citarlo hace cosas locas (bien hecho, bash devs):

variable=Hello World
./program "'$variable'"
-> program receives: "'Hello" "World'"

¿Hay una forma fácil de hacer esto? Heck, ¿hay una manera de hacer esto en absoluto?

Actualizar: Bueno, ya que el problema no parece ser bash, aquí hay información adicional. El programa al que le estoy pasando argumentos es un script de python. Sin modificar los argumentos de ninguna manera, me sale

print sys.argv
-> ['/usr/bin/program', "'Hello", "World'"]

¿Cómo puedo arreglar eso?

Editar: No no lo he intentado

variable="Hello World"

Porque nunca declaro $ variable. No se está declarando dentro de mi función de bash y no se me permite modificarla.

Editar: Está bien, tengo que trabajar de esa manera.

local temp="$variable"
./program "$temp"

Sin embargo, me gustaría saber por qué funciona de esa manera y no de otra manera.