One advantage of server-side rendering is that your clients should not use javascript to make your pages work. If you rely on jQuery templates, you pretty much have to assume that your page will not have content when rendering without javascript. For some, this is important.
As you say, I would prefer not to use the same visualization scheme twice, since you run the risk of letting it go out of sync.
I usually prefer to simply use partial views to generate most of the server-side content. Direct HTML pages tend to render bits faster than pages that need to be “built” after they load, making the initial load a little faster.
We developed an event-based AJAX architecture for our application that allows us to generate some of the content in response to the result of the action and essentially send back any number of commands to the client code to say "Use the results of this rendered partial view to replace the element with an identifier “X” or “Open a new modal popup dialog with this as content.” This is useful because server-side code can have a lot more control over AJAX request results, without having to write client-side code to handle each unexpected situation for each action.
On the other hand, managing the server in this way means that the request must return before the client knows what to do. If the rendering of your presentation was mostly client-based, you could do something to “happen” in the user interface (for example, insert a new comment when it goes), thereby improving the “perceived speed” of your site. In addition, an Internet connection is usually a bottleneck at the speed of most websites, so a simple amount of data (JSON) to send over the wire can often make things faster. Therefore, for elements that I want to respond very easily to user interactions, I often use client-side rendering.
Search engine optimization was a big problem in the past, too, as Jarrett Widman says. But I understand that most modern search engines are smart enough to evaluate the initial javascript for the pages they visit and figure out which page will actually look after loading. Google even recommends the use of "shebang" in your URLs to help them learn how to index pages that are dynamically loaded by AJAX.
source share