On my team, is has been used to prevent developers from pushing code straight to production without being tested first. After some of those updates caused high impact bugs.
It ensures someone else has moved the card to the next status (or, that automated tests have passed and moved it to the next status by automation)
You can permission who can move to what status.
As a random dev, I personally wouldn’t recommend it unless there are legal requirements for such separation (or your org has lawyers that think such requirement exists)