A principal diferença entre runnning /etc/init.d/foo start e service foo start é que service executa o script de inicialização em um ambiente limpo. Se você tiver um caso em que a execução do script de inicialização funcione diretamente, mas não com service , a variável de ambiente está sendo usada na inicialização que você não inicializou manualmente dentro do script. Como o script de inicialização é realmente simples, o uso da variável de ambiente provavelmente está no script /home/oracle/scripts/startup.sh .
Observe também que, se ele não for executado com service , ele não será iniciado corretamente na inicialização.