Testnet version history
The testnet networks are very similar to each other. I listed all of the testnet resets here, and it seems like they make the minimum changes necessary to create a new blockchain.

It seems like the testnet3 reset came about because of compatibility issues:


  "Mark III" because this is the third genesis block for the testnet. The
  main reason for the reset is to get a more 'sane' test network; with the
  BIP16 and BIP30 and testnet difficulty blockchain rule changes the old
  testnet is a mess, with old clients serving up different, incompatible
  chains.


(Source.)

The creation of testnet2 predates the Bitcoin mailing list, but given this discussion in #bitcoin-dev, I think it happened because difficulty on testnet was too high:

17:04   slush   btw any chance to reset testnet?
17:05   tcatm   you could use your pool and a modified bitcoind to reset it in about 6 hours
17:05   slush   no, I don't want to connect pool to testnet ;)
17:06   slush   But new genesis block in next release should solve this, right?
17:07   gavinandresen   You talking about possible testnet reset?
17:08   slush   it would be nice. It's practically impossible to 'test' anything on testnet :)
17:08   gavinandresen   If you have two machines you can create your own private testnet
17:09   gavinandresen   ... but you can't test until they've generated at least 100 blocks.
17:10   slush   gavinandresen: agree, but is there any reason for keeping difficulty so high?
17:10   gavinandresen   Nope
[Edited for length.]


(Source.)