I noticed that the ball moved differently after the first goal a while ago. At the start of the game is drops down and stays still. After a goal it rolls elsewhere.
I just realised this is the residual energy in the ball that is still present when the ball is stopped when a goal is made. So I added
func stop_ball():
Ball.linear_velocity = Vector3(0, 0, 0)
Ball.angular_velocity = Vector3(0, 0, 0)
and call it in reset_pitch().