You will get the same output, of both approaches use model.train() or model.eval().
Currently you are updating the running statistics of all batchnorm layers in your first approach, while the second uses these (updated) stats by calling eval().