Isto soa como o OpenVPN diretamente exec()
s o comando dado, ao invés de passá-lo para o shell. O resultado é que você não obtém interpolação de shell, o que no seu caso significa que suas variáveis são usadas literalmente.
Se você não quiser usar um script, tente chamar explicitamente o shell:
up '/bin/sh -c "echo $ifconfig_remote"'