I agree that in most situations that the core WordPress uninstall.php functionality should be used for uninstall situations involving plugins.

However, with Gravity Forms we have our own uninstall process and implementation. Because of the fact our product is commonly used for information that is considered critical and vital to a business, the accidental deletion of it is something you want to avoid.

To put it bluntly, some users are dumb. They may not realize "Uninstall" means they would lose ALL of their data. They may use it when they are simply playing around with their site and removing and adding a different version of the plugin, etc. not realizing the implications. They may not realizing that by "deleting" a plugin it's going to delete ALL of the data and tables that may be associated with that plugin.

For instance it's common for us to deactivate and delete versions of GF and Add-Ons on our own test machines via the plugin manager and then upload and install different versions. That doesn't mean we want to lose all our data. So we certainly don't want that to occur when we delete the plugin in the plugin manager.

This is why we chose to implement our own version of a full uninstall within the Gravity Forms Settings area that makes it very clear to the end users that it will delete ALL data and remove ALL database tables.

So one size definitely doesn't fit all. But our plugin is atypical. For a lot of plugins the core uninstall.php functionality should be utilized. But that doesn't mean it should be used by all plugins.