I'd much rather prefer if the detection is based on the assembly: TargetFrameworkAttribute in the assemby.

For Xamarin.Android, it would be:

[assembly: TargetFramework("MonoAndroid,Version=v4.4", FrameworkDisplayName="Xamarin.Android v4.4 Support")]

And for Xamarin.iOS:

[assembly: TargetFramework("MonoTouch,Version=v1.0", FrameworkDisplayName="MonoTouch")]

I'd just check for the "MonoAndroid" and "MonoTouch" strings.