Update: Pre-processing input data into a form acceptable for RectangleChart we get finer control on the size of the gaps between groups of bars.
The function prep below takes two arguments: The first argument controls the size of gaps between groups and the second controls group size.
prep[w_: 1/4, n_:2] := Flatten[Riffle[Partition[Thread[{1, #}] & /@ #, n], {{{{w, 0}}}}],
1] &
RectangleChart[prep[]@data, ChartLayout -> "Percentile"]

RectangleChart[prep[1]@data, ChartLayout -> "Percentile"]

RectangleChart[prep[1, 3]@data, ChartLayout -> "Percentile"]

Original answer:
I don't think this can be achieved using BarSpacing.
You can partition input data into groups of two and insert Missing[] between groups:
SeedRandom[1]
data = RandomReal[1, {6, 4}];
BarChart[Flatten[Riffle[Partition[data, 2], Missing[]], 1],
ChartLayout -> "Percentile"]
