Parenting should also confer scaling changes? If you specifically don’t want to change the scale of the parent, then a quick fix is to create a new null, have that parented to the original, then parent all of the objects you want to scale to the null and change scale on null. If you need a scale change on the timeline, then the null can hold it, if you don’t then you can delete the null and reparent to the original.
If you specifically wanted to do it via expressions, then just a simple pick whip on scale to something that matches the scale change, a null, or an expression control should be simple. Not completely why the necessity for the objects to stay at their x,y coordinates, but subcomping all of the moved objects, then adjusting the scale within the subcomp should keep the x,y coordinates the same in the main comp (having the scale of the objects bound to an expression control in the main comp should allow you to adjust the scale from the main comp).
Though, this type of trick can get unwieldy very quickly if you need to make further adjustments. Typically once in 3D space I would recommend to avoid using scale as a good enough looking replacement for Z-axis movement.