Here's an approach that might be useful. What if you ungroup the data first? There will be no space between the groups, because there are no groups per se. But, to retain the "grouping", you need the same color sequence as if the data were grouped. Below is the code. The bottom chart is what you are looking for (I think).
b2 = bar(y2, 'facecolor', 'flat');
b2.CData = repmat(cd, length(b2.XData)/size(cd,1),1);