The way TileBitmapLoader returns the entire collection of tiles every time something changes is a little questionable. However, MapView should not accumulate state of map tiles by only getting new tiles, so probably this is a matter of TileBitmapLoader and MapViewModel.
One option to convey the loading of a single bitmap would be to give MapView a list of MapTile observables that have a BitmapObservable. This would require some sort of a child view model system in order to ascertain that each subscriptions is released with the view model life cycle.
It could also be the current system is good enough for its purpose.