Change scale of objects in array without affecting distance How do you change the scale of objects without changing their relative positions?

In a related question, objects are scaled relative to an Empty that is used as the Object Offset for an array. This also affects the relative spacing between the objects:



I'd like to accomplish a similar feat (scale an array of objects), but without changing their relative position. For example, in the following image, the objects are lined up in the desired locations, but changing the Empty's scale causes the objects (in the array) to shift:



Without using particles, how would you scale the objects of an array but keep the spacing between each object a constant?

I tried using a lattice and a simple deform, but both deformed the shape, rather than a simple scale. It might be possible to use a lattice with a number of hand-made subdivisions, but I'd really like for the scale to be easily tweaked and proportional.

Note: This is to render a single image, not a movie.
While the array modifier, with its limited scaling options isn't really suited for the task, you can quite easily achieve this using dupliframes.

Move and scale your object into the position you want the first duplicate to be in, and hit I to add a LocScale keyframe to it. Then move forwards on the timeline some amount of frames, for example 100. On this latter frame,  move and scale your object to the transformation you want your last duplicate of the object to be, and insert another LocScale keyframe. Playing the animation should now move the object between the locations of the first and last duplicates you want to have. 

Go into duplication panel of the object buttons, and enable the "frames" option, and set "off" frames to 
your animation length / (the number of copies you want to have - 1) - 1,
and animation end frame one frame longer than your animation.
This will take the object's position on frame 1 and add a copy there, skip the off amount of frames, and add another copy on the frame after that, and so on, ending on the final position of the object.



Because animation interpolation by default is non-linear, you should go to a graph editor, and set the curve interpolation to linear (T -> Linear)


Example result, with cube animated to go from 0 to 20 on X, with a copy every 5 units


The instance of the cube you animated will not be rendered, only the copies will be visible in the render.