I am clueless what might be wrong, I've tested several code variants and none of them worked. I've also tried variant with Frame and StackLayout.
<ScrollView VerticalOptions="StartAndExpand" Orientation="Vertical">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CollectionView Grid.Row="0" x:Name="StockCards_CollectionView" ItemsSource="{Binding lc_ReleaseBill.Items}" SelectionChangedCommand="{Binding OnCollectionViewSelectionChanged}" EmptyView="List is empty." SelectionMode="Single" SelectedItem="{Binding SelectedStockCard, Mode=TwoWay}">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Vertical" VerticalItemSpacing="20"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding Name}" FontAttributes="Bold" VerticalOptions="Start" TextColor="White"/>
<Label Grid.Row="1" Grid.Column="0" Text="{Binding Unit}" FontAttributes="Italic" VerticalOptions="Start" TextColor="White"/>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Price_WithVAT_Unit}" FontAttributes="Bold" HorizontalOptions="End" FontSize="19" TextColor="#00c8df"/>
<Label Grid.Row="1" Grid.Column="1" Text="{Binding Amount}" FontAttributes="Bold" HorizontalOptions="End" TextColor="White"/>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ScrollView>
Running on Xamarin.Forms 4.5.0.356 and the same result was on 4.4.0.991640.
I fixed it by setting Collection View Item Spacing from code, which is not ideal but its better than setting margin on Grid inside of Collection View.
CollectionView.ItemsLayout = new LinearItemsLayout(ItemsLayoutOrientation.Vertical)
{
ItemSpacing = 20
};