De qualquer forma, resolvi o problema sozinho.
Na verdade, a solução acima precisa de um pequeno ajuste. Isso é tudo
start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -P "ABC" -no-remote
for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq firefox.exe"') do set MyPID=%%b
PING 127.0.0.1 -n 10 -w 1000 >NUL
taskkill /PID %MyPID% /T
O que estava acontecendo anteriormente era eu estava definindo o% MyPID% após o comando PING (que é apenas um atraso de tempo). Então, nesse período, qualquer novo processo (com o mesmo nome) que foi aberto, registrou seu PID para tarefa. Eu simplesmente movi o comando imediatamente após o comando de abertura do processo e agora ele funciona.
Tecnicamente, porém, se houver muitos processos iguais a abrir (digamos em milissegundos), por vários scripts, isso ainda pode causar problemas e tarefas podem matar processos errados (pode ser que alguém escreva um responder sobre isso. eu não vou aceitar a minha resposta a partir de agora ... mas vai esperar por um dia ou 2, para isso):)