Olá, Lucas, tudo bem?
O GridSearchCV, por padrão, já realiza uma técnica chamada cross-validation (validação cruzada), dividindo os dados em conjuntos de treinamento e teste e avaliando o desempenho do modelo para cada combinação de parâmetros. O objetivo foi didático para demonstrar como realizar a busca de hiperparâmetros utilizando o GridSearchCV. Portanto, não é necessário fazer um train_test_split antes, pois o GridSearchCV já cuida dessa parte.
Quanto à sua segunda pergunta, é importante separar os dados de treinamento e teste para evitar o viés de treinamento. Quando o modelo é treinado e testado com os mesmos dados, pode ocorrer um superajuste (overfitting), onde o modelo se ajusta muito bem aos dados de treinamento, mas não generaliza bem para novos dados. Portanto, é recomendado utilizar dados diferentes para treinar e testar o modelo.
Espero ter esclarecido suas dúvidas.
Qualquer pergunta, compartilhe no fórum.
Abraços e bons estudos!