Depende.
Muitas vezes vc não tem escolha - por exemplo, se acabou de entrar em um projeto em andamento, no qual já escolheram pra vc.
Mas pra projetos feitos do zero, os motivos variam muito. Infelizmente, não é incomum escolherem por moda (está "todo mundo" usando, vamos usar também), sem uma avaliação técnica mais detalhada. Nem sempre vc precisa daquele framework: às vezes ele pode ser um canhão pra matar mosca, e às vezes pode ser exatamente o que vc precisa. E vc não chega a essa conclusão só seguindo o que o blogueiro/youtuber/influencer da moda disse pra vc fazer. Cada caso é um caso, o que funcionou muito bem pra um pode não funcionar tão bem pra vc. Sempre tem que avaliar os prós e contras e só depois decidir.
Muitas vezes é comum escolher o que as pessoas da equipe já conhecem, para ganhar tempo (a velha história de "a melhor ferramenta é a que vc conhece"). Mas às vezes vale a pena gastar um tempo aprendendo algo novo, desde que seja avaliado que aquilo vai trazer benefício no futuro.
Num mundo ideal teríamos tempo de avaliar várias opções e escolher a mais adequada para cada caso. Na prática, nem sempre ocorre e fazemos "o que dá". Tem vezes que até dá pra testar duas ou três opções. Mas às vezes só tem uma opção (que é o mesmo que não ter opções).
Outro ponto é que em muitos projetos (principalmente os não tão grandes nem tão complexos assim), a escolha de linguagem/framework/banco pode nem fazer tanta diferença. Mas claro, isso também tem que ser avaliado antes.
O detalhe é que muitas vezes, pra conseguir avaliar bem, vc precisa de tempo e experiência. Só depois de quebrar a cara usando determinada tecnologia vc percebe que ela não era boa para o seu caso. Faz parte, o importante é não cometer o mesmo erro no futuro.