The <Other Root>
is usually a GCHandle Xamarin.iOS uses internally to keep the managed object alive until the corresponding native object is freed. One way of breaking this link is to call Dispose on the object (you don't mention calling Dispose on UIBubbleMapView), in which case the managed object will be collected by the GC (unless it's referenced by other managed code of course).
Most likely there is some other native code holding a reference to this UIBubbleMapView instance, but finding out exactly what is going on you need to profile using the Allocation instrument in Instruments (enabling ref count tracking to track down exactly which code is retaining the object).
Update
Until you call Dispose on the managed object, the managed object will retain the native object [1]. This means that if the retain count is > 1, then there are additional native retains to that object (it also means that once you've called Dispose on the object, the remaining references are all native). Note that at this point the managed object might be collected by the GC, so you can't track the (native) object by using HeapShot anymore, you must use Instruments.
Hint: if you enable the right side-bar in Instruments, you will get a stack trace of each retain/release call. This is very helpful in tracking down who retains an object.
[1] Xamarin.iOS will also release the reference the managed object has once the retain count reaches one (and the GC has determined that the managed object isn't referenced from other managed code).