A resposta para a pergunta depende. Existem 2 cenários nessa situação e você precisará fazer uma escolha com base no cenário apropriado.
Cenário 1 - Script crítico / Script necessário
Caso o script que você está usando seja importante para carregar o site, é recomendável que seja colocado na parte superior do seu documento HTML, por exemplo <head>,. Alguns exemplos incluem - código do aplicativo, autoinicialização, fontes etc.
Cenário 2 - Scripts menos importantes / analíticos
Também existem scripts usados que não afetam a exibição do site. É recomendável que esses scripts sejam carregados após o carregamento de todos os segmentos importantes. E a resposta será a parte inferior do documento, ou seja, a parte inferior do seu<body> antes da tag de fechamento. Alguns exemplos incluem - Google analytics, hotjar, etc.
Bônus - assíncrono / adiado
Você também pode informar aos navegadores que o carregamento do script pode ser feito simultaneamente com outros e pode ser carregado com base na escolha do navegador, usando um argumento adiar / assíncrono no código do script.
por exemplo. <script async src="script.js"></script>