(edit: slightly improved to demonstrate the effect and again to display fov/distance)
You know that horror movie effect of zooming in but keeping the subject at the same size?
I think of that every time someone asks “how do I keep a mesh within view at the same size?”
You can either change the position of the camera or the field of view. Because the ArcRotateCamera controls generally change the position of the camera, this small calculation keeps the camera target constant size by updating fov. In cinema, this is called a dolly zoom.
The trick is to save the original relationship between fov and distance to target, then apply a little geometry.
const d = BABYLON.Vector3.Distance(camera.position, camera.target.position||camera.target);
camera.fov = 2*Math.atan(camera.metadata.width/(2*d));