Hey czar and allan,
(edit: derp, I meant to copy the OP's name.)
One approach is to add a second private variable to the Block that smoothes out changes in the index variable. Then use that smoothed value to position the Blocks instead of the actual index.
So in the example I linked below, each block has two private variables, index and indexAnim.
Where index is the block's sequence in the row of blocks,
and indexAnim is a variable updated every tick to glide towards the value currently in index.
So if index changes from 0 to 1, then indexAnim will smoothly transition over several ticks from 0 to 1.
An easy way to set up indexAnim to do this smooth attraction to the value in index is with the following event.
Every tick: Set indexAnim to: lerp( indexAnim , index , 0.1 )
This means that every tick, the indexAnim value will move towards the index value by an amount of 0.1 (10%) of the distance currently between them.
Here's a commented example capx.
Array Glide Reorder - v2
Left-click drag blocks.
Right-click to create new blocks.
Middle click to destroy blocks.
Mousewheel to change cell width.