How to preserve the main dimension when adding space between elements
let's start from your exemple with those objects (i'll call them Base):

1st, we create objects (i'll say Spacers), they don't need to have geometry but giving them a shape make them visible and selectable. The important thing here is their origin, it has to be in the middle of the space between the objects we want to control.

The horizontal Spacers on the right have to be rotated 90° on the Y axis in Object mode, because we'll use their local X axis.

Now select 1 of the Spacers RMB and the Base object touching it (in this order) Shift+RMB and enter Edit mode Tab. Select the face touching the Spacer, hit Spacebar to search for Hook to selected object, click it with LMB. Now your face is hooked to the spacer object. Get out of Edit mode Tab. You can move the spacer to check if the face is following as it should.

Repeat the same operations on every Spacers and their  adjacent faces. There are 3 Base objects that needs to be hooked to the same spacer.

Now select the second Spacer, go in constraints tab and add a Copy Scale constraint. The Target has to be the 1st Spacer, the controller. Remove Y and Z axis, choose local space from in 2 Space menus. For this spacer, we'll use an Influence of 0.5. This is important because the concerned Base object will be affected by 2 spacers but the left Base object is affected by only 1, so the scale has to be 1/2.

This one needs an Influence of 1.

The selected Spacers have an influence of 0.5, the others have 1.
  

Now you can select the Controler Spacer and scale it on it's local X axis with S->X->X and all object should be modified to use the same space between them!
  

Here is the .blend file