I do not know exactly what can cause these issues, but I guess there can be many : datatype, lazy evaluation, parallelism, concurrency, too many abstraction layers?. Are these performance aspects covered by "Haskell In Depth" ?
You are absolutely right. There are chapters on runtime behavior of Haskell programs and benchmarking (chapters 9 and 10) where I explain the reasons. In fact, I also show how abstraction layers can be beneficial in terms of performance in chapter 14 on streaming.