- you have to care about incompatibilities. Frameworks like Dojo do it for you, but I compare it to the portability of Hibernate/CMP 2.0/3 code between different databases. Such abstractions are not always totally transparent, in most cases you have still to now, which browser you are using.
- the idea of http and browser, was synchronous request and response at one page. Ajax and other technologies break this rule - which is an obvious hack. Nothing against hacking, but every hack needs some workaround, which are expensive to implement and even more expensive to maintain (hacks are hard to document :-))
- the communication between browser and server is more fine grained. It is hard to say, whether this fact will have impact to the scaleability and performance, but the developer has to consider this in the architecture and design. In slow networks, fine grained communication will hit the performance (because of latency).
- You can build very cool webapps WITHOUT installation of additional runtime.
It depends on the project context and expecially the customer, whether an additional installation is appropriate, or not. For the most intranet applications, the installation of an additional runtime shouldn't be a big issue.