Quando um processo filho é criado, o ID do usuário do processo e os IDs do grupo são herdados de seu processo pai.
Assim, quando você altera os grupos de usuários (na verdade, altera os arquivos de configuração em algum lugar no disco), os processos não o notam automaticamente e alteram seus ids de grupo (processos não-raiz não têm direitos para isso).
E quando você começa a bater ... bem, você apenas começa a bater, nada de especial acontece. Apenas herda os ids de grupo dos pais (shell gráfico ou outro bash talvez).
Mas quando você executa su ou login, toda a mágica acontece. Eles verificam se você tem permissão para fazer o login e alterar seu ID de usuário e IDs de grupo (usando chamadas de sistema que exigem uma identificação de raiz efetiva - é por isso que eles configuram bit suid) para que todos os processos filhos herdem esses ids.