I would argue that for most cases, that's preferable to simply cutting old functionality. The only exception would be in environments where the upgrade process is more rigid where users/admins know what's changing with an upgrade and have a safe and easy way to roll back in case of any issues.
>by the time it actually gets removed in a future version.
doesn't always happen, so we're left with new, new v2, new v3 options and old one still exists "because it may break somebody's workflow"