Programas de serviço "reais" têm código para lidar com as atividades de limpeza e desligamento. Você está executando um programa que não foi planejado para ser executado como um serviço e não possui esse código para lidar com a finalização normal quando o Service Control Manager (SCM) sinaliza que o serviço está sendo interrompido.
Alguém poderia escrever um bom wrapper de serviço para o VirtualBox que poderia lidar com a execução como um serviço. Essa é a solução real. Infelizmente, você não vai encontrar um "hack" que faça o que você está procurando. SRVANY (e todos os outros programas do mesmo tipo que eu saiba) não tem nenhuma capacidade de executar código especificado pelo usuário quando o SCM sinaliza que o serviço está parando.