I am happy with Adrej's answer, but I would like to drill down further.
To start with, denotational semantics wants to say something like "the meaning of this notation is that". A real semanticist would want to imagine that the meanings are what exist in our mind and the notations are just a way of expressing those meanings. The requirement that denotational semantics should be compositional follows from this. If the meanings are primary and the notations secondary, then we have no choice but to define the meanings of bigger notations as functions of the meanings of their constituents.
If we accept this viewpoint then a good denotational semantics needs to capture the meanings we presume we have in our mind. Any compositional semantics wouldn't necessarily fit the bill. If I come up with a compositional semantic definition and nobody agrees that it states any meanings they have in their head, then it is of little use. Games semantics at present is in this situation. It is a compositional definition and technically quite strong, but very few people agree that it has anything to do with the meanings they have in their mind.
That said, any compositional definition has various technical advantages. We can use it to verify equivalences or other properties by induction on the syntax of terms. We can use it to verify the soundness of proof systems, again by induction on the syntax of terms. We can verify the correctness of compilers or program analysis techniques (which, by their nature, are defined by induction on syntax). A fully abstract semantic definition has even more technical advantages. You can use it to show that two programs are not equivalent, which you can't do with any arbitrary compositional semantics. A fully definable semantic definition is even better. Here the semantic domains have exactly what you can express in the programming language (with some provisos). So, you can enumerate the values in the domains to see what values there are, which would be hard to do with syntactic notations. On all these grounds, games semantics scores brilliantly.
However, compositional semantic definitions have been losing their edge over the years. Robin Milner and Andy Pitts have developed a number of "operational reasoning" techniques, which work purely on the syntax but using the operational semantics wherever needed for talking about behaviour. These operational reasoning techniques are low-tech. No fancy mathematics. No infinite objects. We can teach them to undergraduates and anybody can use them. So, many people ask the question why we need denotational semantics at all. (Martin Berger is probably in this camp.)
Personally, I have no problem with having many tools in my tool box. Denotational techniques might score better for some problems and operational techniques for others. The researchers that develop the theory might be better tuned to one approach or the other. Pretty often, we can develop the insights in one approach and transfer those insights to the other approach. (A lot of Andy Pitts's work is of this kind. Relational parametricity was developed in the denotational setting but he is able to figure out how to restate it as operational reasoning. When I look at it, I say "wow, I would have never thought that would be possible." Separation Logic is also going this way. Steve Brookes gave a 60-page soundness proof for Concurrent Separation Logic using denotational semantics. Viktor Vafeiadis recently came up with an operational soundness proof that is only 4-5 pages long.)
Operational approaches also score brilliantly when the programming languages get very fancy, with all kinds of loopy higher-order types. We may have no idea how to model such things mathematically. Or, the standard mathematical models might turn out to be inconsistent under the stress of loopiness. (For example, see "Polymorphism is not set-theoretic" by Reynolds.) Operational approaches that work purely on syntax can neatly side step all these mathematical problems.
Another approach that is intermediate between operational and denotational approaches is realizability. Instead of working with syntactic terms as in operational approaches, we go partly denotational by using some other form of mathematical representatives. These representatives may not qualify as real denotational "meanings" but they would at least be a bit more abstract than syntactic terms. For example, for polymorphic lambda calculus, we can first give meanings to untyped terms (in some model of the untyped lambda calculus) and then use them as the representatives ('realizers') to do some form of "operational reasoning" at a slightly more abstract level.
So, let there be some healthy competition between denotational, operational and realizability approaches. There is no harm.
On the other hand, there might also be some "unhealthy" competition growing between the different approaches. People working with one approach might be so closely wedded to it that they might not see the point of the other approaches. Ideally we should all be aware of the strengths and weaknesses of the different approaches and develop a scientific attitude towards them even if they are not our individual favourites.