It looks like WordPress does not have a way to limit a post status to a specific post type. If a new post status is registered to be used with a custom post type, it will also be available to regular post and page post types.
For example, when you ask WordPress for the statuses available for a post, it returns the following:
- publish
- future
- draft
- pending
- private
- trash
- auto-draft
- inherit
- request-pending
- request-confirmed
- request-failed
- request-completed
The last four statuses are for the Personal Data Requests (user_request), not posts.
I would very much like to implement support for custom statuses without displaying these status for post types that they are not related to. I need to think through what the downside would be for showing these statuses for all post types.