See there are two modes,
i) Training mode     ii) Testing mode
so the eval() function informs all the layers that you are in testing phase and not in training phase, similarly the train()  function informs the layers that you are in training phase.
By setting require grads to False you will be asking your network to stop calculating gradients. So it depends upon your architechture. You can manually try changing the track_running_stats flag and see the difference.