That's because - truly and honestly - you're in a super-minority. Like I said above, our IAP conversion rate to ad-free is insanely small, and accounts for less than 5% of revenue.
Building in the IAP mechanism isn't trivial, and worse, IAP purchases can easily be hacked (especially on Android). Both platforms recommend you run your own server that verifies purchases with Google and Apple's servers, because even client-based validation is easily hackable.
We have IAP removal of ads, but we're VERY successful compared to the average developer, and actually run our own servers. For the average dev, it's a non-trivial task. (Apologies for repeating myself.)
I'm not suggesting that these things are trivial, exactly the opposite actually. I'm assuming that they aren't and suggesting that they should be - that all the validation and heavy lifting is something that ideally Apple/Google would handle and enabling the functionality would be trivial from a developer perspective.
I wonder if conversion of free to ad-free would be better if the offerings were truly separate?
I'm somewhat distrustful of IAP for this purpose as it has been flaky in my experience (likely to due to the seller run validation services as you describe). I'm much more inclined to try a 'Free' app followed by purchasing the ad-free 'Premium' version than I am to buy an IAP to convert one to the other.
Building in the IAP mechanism isn't trivial, and worse, IAP purchases can easily be hacked (especially on Android). Both platforms recommend you run your own server that verifies purchases with Google and Apple's servers, because even client-based validation is easily hackable.
We have IAP removal of ads, but we're VERY successful compared to the average developer, and actually run our own servers. For the average dev, it's a non-trivial task. (Apologies for repeating myself.)