Sim, o ambiente é diferente.
Executando-o a partir do init.d ele provavelmente tem a permissão do root, mas você terá outras permissões, provavelmente o mesmo que o Xorg. Provavelmente há alguma mensagem perdida entre várias camadas (dbus?) Por causa de permissão diferente, antes de ir para um modo de compatibilidade. Tente usar crontab com "@boot", então o script será executado na inicialização, mas como o usuário correto, e somente quando todo o suporte ao usuário estiver pronto.