Бывает надо... Поместить принятые данные в fifo, например. Такая архитектура, что очередь в другом модуле. Либо чисто по техническим причинам оно в другом модуле, сложно всё засунуть в один C-файл. Либо какие-либо чисто вычислительные функции (без сторонних эффектов) нужны именно в прерывании и опять же неудобно всё засунуть в один C-файл.