Refraction quality is lower in rendered image than in the viewport preview
The problem is that you are using flat shading on the mesh, as opposed to smooth shading that interpolates normals: https://docs.blender.org/manual/en/dev/modeling/meshes/editing/normals.html?highlight=smooth%20shading#shading

The reason why it looks ok in the viewport is that your subdivision surface modifier is set to 4 iterations for the viewport and 2 iterations for the final render. So the high subdivision in the viewport hides the flat shading.

Solution: Set viewport subdivisions equal or lower than final subdivisions, and enable smooth shading on the mesh (see above link).