I found the problem, and it seems like logical behaviour to me… Although indesired.
Basically, collection-repeat’s collection-item-height sets the height for each item! In your case, you have 3 items per row, but the height calculates for 3 items, therefore, limiting the visible rows to the visible viewport size divided by three. I have tested (and proofed) this by changing your height value divided by 3, although items are overlapping now (because they are 1/3rd of their height), all items that should be visible are visible.
Bascially, the “ïtems” in the collection, should be the row, and not the columns… As far as goes for the height anyways.
This would be logical behaviour in my opinion, for manual grid addition in the inner’s of the collection-repeat, you should iterate over rows and render columns inside of it… But! This grid is made using ionics collection-repeat grid usage (the 33% width setting) and in my opinion the directive should generate a nice grid system and calculate the height for the rows instead of the columns (items)
Basically, I think collection-repeat should be adapted to change the calculation of the height for each item. I made a quick and dirty example for a quick fix:
var item-height = collection-item-height;
if( collection-item-height.substr(collection-item-height.length - 1, 1) == "%" ) {
var percentage = collection-item-height.substr(0, collection-item-height.length - 1);
var amountOfTimesTheItemFitsInArow = 1;
for( var i = 2; i < 500; i++ ) { //It's only usefull if the item fits at least twice in a row, 500+ items in a row sounds impossible on current viewports, even in desktop browsers)
if( percentage < 1/i ) {
amountOfTimesTheItemFitsInArow = i;
} else {
break; //We can break loop when we found the first amount of items that doesn't fit, it'll never fit again from here
}
}
item-height = collection-item-height / amountOfTimesTheItemFitsInArow;
}
/*item-height now is the height that should be taken into consideration for the collection-repeat item height, while collection-item-height should be the height that has to be applied to the individual items.*/
Of course, this is just a quick and dirty fix… But it would work 
@mhartington any thoughts on this?