Oi Felipe, boas observações, vou separar por tópicos, acredito que dessa forma fique mais fácil
Firebase em produção
O módulo de Cloud Messaging e Analytics você pode usar sem nenhum problema, ambos são free e funcionam relativamente bem. Entretanto, se optar por usar outros serviços deles, como é o caso do Realtime Database, aí eu recomendo que tome cuidado, primeiro com o preço, segundo com a forma na qual a sua App funciona, pois já vi alguns desenvolvedores, como também amigos que atuam como desenvolvedores Android reclamar de problemas que tiveram com o Realtime Database por questões de lentidão. E pior ainda, pelo fato de não termos a possibilidade de modificar a forma como o Firebase funciona ficamos suscetíveis a qualquer problema que apresentar... Resumindo, usar o Cloud Messaging e Analytics não vejo problema algum, porém, as demais ferramentas eu recomendo que avalie muito bem.
Token do Firebase no servidor
Quando enviamos o token para o servidor, permitimos que o servidor tenha a capacidade de enviar as mensagens para os dispositivos. Basicamente é realizada uma requisição via HTTP com o token, pois é por meio do token que conseguimos mandar as mensagens para os dispositivos. É claro, nessa requisição precisa seguir alguns padrões que são descritos nessa parte da documentação do FCM. As principais informações para realizar a requisição são:
- token: para poder direcionar a mensagem para o dispositivo.
- chave do firebase: para ter a autorização do serviço Firebase criado por você.
Possíveis implementações para o seu cenário
Considerando o que você disse sobre notificar o motorista quando for cancelado é algo que deve acontecer no servidor mesmo. Em outras palavras, por meio do token recebido e gravado no banco de dados no servidor, você vai fazer uma requisição para o Firebase conforme mencionei acima e assim ele vai ser notificado.
Envio do token
Você pode enviar no momento que achar necessário, mas enviar o token não significa que ele vai receber uma notificação sem nenhum motivo, portanto, não vejo motivo para enviar o token para o servidor apenas quando logar, afinal, o servidor que vai controlar quando ele deve ou não receber uma notificação.
Sugestões para a sua necessidade
Considerando todos os detalhes que passou, o que recomendo que você faça nesse exato momento é verificar a documentação do Firebase para realizar essas requisições via HTTP no lado do servidor. E então, depois de compreender como funciona, tente implementar da forma que faça sentido para você o momento de enviar as notificações. Apenas lembre-se que tanto a chave de acesso do Firebase quanto os tokens gerados pelos dispositivos são importantes para que uma notificação seja enviada.
Caso tiver mais um dúvida específica é só mandar :)
Abraços.