Ответ 1
AMD используется в браузере (например, RequireJS): причина в том, что она позволяет осуществлять параллельную загрузку файлов, поскольку сетевая латентность является основным узким местом.
CommonJS используется на сервере (например, nodejs), где файлы могут считываться с диска заранее, но вы не хотите читать файл, пока не попытаетесь использовать содержащий его код.
Вот видео по теме, которое далее объясняет это: http://www.youtube.com/watch?v=KDrWLMUY0R0