ftdi дергает ногой, mega аппаратно распознает эти данные. Но поскольку никакого контроля готовности приема мегой нет, ftdi тупо шлет данные, не дожидаясь, пока мега будет готова принимать данные.
Штатная библиотека вешается на прерывание, которое вызывается в момент прихода символа из uart, помещает этот байт в буфер.
В случае простого приложения, готового непрерывно пытаться читать данные из порта, получается выгоднее использовать такую простую библиотеку. Она занимает буквально байт 40 flash, думаю.