UART Reception + DMA
You did not specify the hardware, and you used "CPU" throughout the question. However since you also mentioned half/complete interrupts I am going to assume that you are actually talking about MCU. 


  using DMA with UART needs constant byte count


Not really. The combination of cyclic DMA mode + half/complete/idle interrupts allows you to process frames of any length. For the hardware that does not support idle interrupts there are alternative implementations, like using idle timer with Rx line wired to timer reset input.

This tutorial has great summary of various DMA methods. You may also find AN3109 by ST useful.


  In which applications is UART + DMA concept more suitable than normal UART interrupt method?


Pretty much any packet-based communication (including Modbus) can benefit from DMA. The exceptions are:


If your communication consists of just a few bytes sent with long idle periods in-between then setting up and processing DMA will unnecessarily complicate the software;
In time-critical applications if reception of certain bytes (e.g. EOF) requires immediate reaction then using DMA may introduce unacceptable latency;
Finally, if your application has nothing else to do when there is no data to process AND the MCU is sufficiently fast to process continuous stream of bytes at maximum bandwidth one by one then again, using DMI will introduce unnecessary complexity.


Basically, when making decision whether or not use DMA, consider this - data processing will take exactly the same amount of cycles anyway. Using UART interrupts will add IRQ entry/exit overhead to that per each byte. Using DMA will add same overhead but only to half/complete/idle buffer interrupts. Therefore, any buffer longer than two bytes will theoretically save some cycles for you (in reality you'd need somewhat longer buffer to see the benefits).