I just spent two and a half hours testing your setup, and going through my code thinking there was a bug somewhere. After all that I find you've got a typo in your ManyManyDataObjectManager constructor.
new ManyManyDataObjectManager(
$this,
'AvalableSizes',
'ProductSize',
array(
'size' => 'Size',
)
)
Ugh.. This is a good reminder why I stopped offering free support. :)