The main reason is that it is not good to put logic that is too expensive for the whole cluster. And if the user can do it simply and directly using a feature that already exists(And he knows the cost). Adding one more feature is wasting time and resources.
Using Upsert gives the user more control and can do a lot more(custom constraint) by adding logic to the query. So, add a new directive in addition to being expensive is plastered.
Cheers.