It's not about guessing if the db is right, it's about checking if it actually is.
That applies both before running the script to test the existing environment, and after it ran, to make sure the right things happened.
Semi-stupid example: There's an ordered set of possible responses to a question the user gets asked. Migrations inactivate some of them, rename some, and insert some, which are supposed to end up in specific places in the order. Whether you check when the script runs in production or not, at some point in building these migrations at least, you need to verify the end result. That might as well be part of the script, so it DOES run in the live case, and you know the live result is right.