Рудимeнт прошлого...
В давних браузерах (IE в частности), как и терминале (DOS-сессии) это унаследовалось от первых принтеров (вспомните пишущие машинки: писатель сначала возвращает каретку в начало, а потом прокручивает лист дальше на строчку).
Тем самым, \r - вернуть каретку, \n - новая строка.
Мои скрипты часто не работали, потому что Opera, IE и Chrome по-разному разделяли строки (в IE - \r\n, в Chrome - просто \n).
Выражение /\r?\n/ означает или \n, или \r\n.
P.S.: Это у меня используется везде для устойчивости к "рудиментам"