Причина: сайты с 10-20 js и столько же css. Почему бы не сделать 1 файл со всеми js,css,img[,html] на лету и отдавать его браузеру. Например, браузер присылает заголовок, что он может поддерживать "скомпилированные" файлы, а сервер тоже заголовком сообщает, что передает 1 файл, который нужно будет обработать.
Минусы: очевидно, что больше мороки, доп. стандарты.
Плюсы: огромное ускорение.