ok, when it comes to the web-site type application, the best is, to always support a multitude of formats, in a RESTful way ... HTML, XML, JSON, RSS, Atom (where it makes sense) and why not others ... to do so, you need a clean MVC architecture on the server ... well, it does not need to be MVC, but let's say, the rendering layer should be dumb as bread, and a well written business logic running underneath ... your frontend controller should choose the right format to return in response to a request and there you go ... your whole business logic to retrieve/update data, make pagination, etc. is implemented once, and then you just render it into an HTML template, or convert it into JSON, or do whatever ...
now an idea would be, to make one view implementation, that will return rock-solid, semantic and plain HTML ... and make one, that'll heavily use javascript ... make them accessible under different paths, and make the javascript uncrawlable ... put one line of javascript at the beginning of your main HTML-template, that will cause a redirect to the javascript version of that site ... you can do the same thing for flash as well ... etc. ... then, in the "dirty" version of the apps, you can do really anything, you like ... load templates per HTTP, and then the data in JSON, and do the rendering on the client, creating a persistent stateful clientside javascript app ... why not?
i personally think, it is better, than starting with nice and clear HTML, and than stuffing in tons of javascript, that won't even work for all users ...