The changeSet level preconditions should be checking the state at the time the changeSet runs, not from the beginning, so in your scenario changeset 2 will see that table A exists, even in the first run.
Are you seeing differently? And what version are you running?
Nathan