I've managed to isolate the memory leak issue. The view model is not collected because of e reference to the last clicked (respective) TabItem hold by the TabControl.
When in the TabItem header there is a button that removes the item on click, this reference is not cleared (there is no MouseLeftButtonUp event) and the view model stays in the heap.
The fix, will be present in our next official Q2 SP2 2012 release in September.
About the concrete example, there is an issue with detaching from the CollectionChanged event of the parent view model. This should be done in the Dispose method in order for the view models to be garbage collected.
the Telerik team