move instanced objects relative to empty
Here is a way to do it:

Create a large plane, subdivide it, create a sphere, create a small plane that you put at the same location as your sphere, subdivide this small plane, select all its vertices and create a vertex group:



Give your small plane a Shrinkwrap modifier / Wrap Method &gt; Project with the large plane as Target. Give your sphere a Copy Location constraint, with the small plane as Target and in Vertex Group select the vertex group you've created, enable the Z axis only.
Create 2 empties, one under the large plane, the other one above, parent the bottom empty to the top empty, give your large plane a Warp modifier, choose the 2 empties in Object From and Object To, play with the Strength and Radius values, it will warp the plane surface:



Select the sphere and the small plane, press AltD to duplicate along the X axis, press ShiftR to repeat the duplication. Do the same on the Y axis. Make the planes invisible, move the top empty to deform the plane and the spheres should follow: