Olá Marcos,
Os dois são equivalentes sim como você percebeu, mas tem algumas diferenças no funcionamento de cada um. O score() vai receber os valores de x e y, vai aplicar o fit() no modelo e então vai executar o r2_score() por trás utilizando o y_real e o y_previsto.
Resumindo as diferenças:
# score recebe o x e o y
modelo.score(X_test, y_test)
# r2_core recebe o y real e o y previsto
metrics.r2_score(y_test, y_previsto)
Olha se esse tópico te ajuda sobre o score e o r2_score.
Assim o erro deve estar acontecendo porque você está passando os valores de y para o modelo.score(), e o que essa função espera é que seja passado o valor de x e o valor de y
Exemplo:
modelo.score(X_test, y_test)
Espero ter ajudado, qualquer dúvida é só falar!