Because bcrypt generates a new random salt on each run and embeds it at the start of the hash. This is intentional: two users with the same password get different hashes, which defeats rainbow-table attacks. Verification uses the salt stored inside the hash, so it still works even though the value changes.