I've just downloaded MySQL Compare and tried it on a DB upgrade that we're about to perform. I've got to spend some more time checking to see if anything is missing or different but my first impression is that each table change appears to be in a single statement.
For example one of my tables has 2 columns being removed, 3 added, 2 keys added and one foreign key added. Each of these is listed in the change script as separate ALTER TABLE statement.
This particular table will take around 4 minutes to perform a single ALTER TABLE command meaning the total time would be almost half an hour. If they were joined together into a single statement everything could be done in 4 minutes.