O Zygote não está realmente ligado ao Dalvik, é apenas um processo de inicialização. O zigoto é o método que o Android usa para iniciar aplicativos. Em vez de ter que iniciar cada novo processo do zero, carregando todo o sistema e a estrutura do Android novamente toda vez que você deseja iniciar um aplicativo, ele faz esse processo uma vez e depois pára nesse ponto antes que o Zygote faça algo específico do aplicativo . Em seguida, quando você deseja iniciar um aplicativo, o processo do Zygote se bifurca e o processo filho continua de onde parou, carregando o próprio aplicativo na VM.
Embora esse método tenha sido originalmente projetado para Dalvik, não há razão para que o ART não se comporte exatamente da mesma maneira. Ele não precisa compilar aplicativos JIT enquanto eles estão em execução, mas ainda tem muitas coisas Java independentes de aplicativo para carregar (ou seja, toda a estrutura do Android); portanto, faz sentido usar o mesmo fork quando método carregado para iniciar novos processos.
É natural em um projeto tão grande que existam outras sobras da Dalvik que ainda são úteis no mundo pós-Dalvik; portanto, não se surpreenda que haja outro código que foi originalmente escrito para fazer parte ou trabalhe com a Dalvik, que ainda existe para o ART usar.