Another aspect from a pure CS perspective: FIR filters are pure functions; IIR filters are not because they are stateful. FIR filters have lots of nice properties but [at least] one big downside: They tend to require more computation to accomplish the same result. So sometimes an IIR filter is a better choice when you don't have much processing power (e.g. in a small embedded single-core processor).