Deactivating a plugin does not undo what it did

Options, tables, scheduled events, user meta and post meta all survive deactivation and deletion unless the plugin explicitly removes them, and most do not.

// uninstall.php — runs on delete, not on deactivate
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    exit;
}

delete_option( 'turkerdev_settings' );
wp_clear_scheduled_hook( 'turkerdev_daily_sync' );

$wpdb->query( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE 'turkerdev_%'" );

The constant check is required — without it the file can be requested directly. Scheduled events are the ones that cause visible trouble: a cron hook whose callback no longer exists fires on every page load, fails silently and is never removed. A site that has had thirty plugins over ten years has a wp_options table full of settings for software that is long gone, and clearing it is archaeology.