If we consider the theoretical maximum of COP for a heat pump, we will see that it is possible to make it infinite by approaching the temperatures of each source to each other. Yet, in a real engine we cannot get much higher COP's with this approach... Why does this actually happen?
Simply put - there are always losses in a heat engine. For example, if you have a piston, there is some friction which means a certain amount of energy lost "per stroke". As you reduce the amount of heat that you can transfer per stroke, this loss becomes the dominant term. So although you might win in terms of entropy of the working fluid (because of the small $\Delta T$) you lose in fixed terms.
This will get you to some optimum - but it's certainly not infinite.