The traditional answer to your question is that ladder is better for sequential tasks where you are controlling many events that occur one after the other, and/or are interlocked with timers. A typical example might be some form of machine control where pieces are feed through a machine which then carries out a series of actions one after the other. The key here is that the information being processed primarily relates to events or periods.
Function block is best suited to applications where the task is continuous in nature. A typical example might be some form of heating or chemical process. A water treatment plant where levels, pH's, pressures are being continously controlled on a continuous flow of water is a good application for function block. The key here is that the dominant information being processed relates to analog variables.
Neither language is innately "better". Ladder is remarkably versatile and is the most popular "default" language because most engineers are very practised with it. By contrast function block is definitely the better language for analog dominated applications. Most modern processors allow the user to choose what language they want to write in, and to choose at the routine level, ie sequences can be written in ladder routine, and analog processing in an FB routine, all inside the same program.
The only other consideration is the usual "what about the maintenance guy trying to troubleshoot it at 2am?". Well only you can decide what policy applies as per you local conditions. It is worth noting that inside North America ladder logic probably accounts for >85% of the logic written, whereas in Europe the number may be much less, as a guess around 50%, with FB and other languages such as Structured Text being a lot more prevalent.