I've been following the instructions here: Changing Size from small to big in array or duplication
In an Object-Offset array, whatever transform would take the original array element to the Object will be repeated for each subsequent element.
So if (top row) the controlling Empty is offset in Y, and scaled by -1, then subsequent elements will have the offset from the previous element scaled by 1, -1, 1, .... . The scale multiplies.
To get shrinking elements, scale the Empty to a positive fraction of 1. (0.8 in the bottom row, with no Y offset, giving 0.8, 0.64, 0.512....)