Array modifier offset variation
If you give an array an Object Offset, then whatever transform there is between array-element 0 and the offset-object, will be applied recursively to each subsequent element, in the object-space of the previous element.
So, for example, if the array is in X, and the offset-object is scaled down in X, each element will be smaller than the last, and closer to it, in X. This way, you can achieve geometric progressions in intervals between elements. There are 2 obvious drawbacks.

The elements themselves are scaled down, along with the intervals between them.
Intervals limited to geometric progressions, or, by giving the array a Constant offset, too, a 'Multiply Add' relation between each interval and the next.

You can overcome drawback 1 by making an array of a single vertex, setting its 'Instancing' Object Property to 'Vertices', and parenting the desired array element to the vertex array:

The Empty, 'Array_Xform', is scaled down in its X, so each X interval is .882 times the size of the last. A constant has been added to those intervals by the Constant offset in the array modifier.
To overcome drawback 2, I think you would have to deform the vertex array using another modifier, for example, Displace.
However, in 2.93+, a Geometry Nodes modifier below the Array will give you complete control over the distribution of elements, in all axes, using anything you can express mathematically, or by texture, or proximity of another object, or... well... anything.

Above, that's just a random amount added to each interval of the array. The only nodes out of shot are the Group Input and Output.