There is not an "ideal" way for me.
Working with pure JSON and jTemplates for client side rendering with jQuery when i need pagination and I've already the template client-side.
Using JSON too when I've to implement a simple call to the server: autocomplete, in-place edit, saving drafts, etc..
When I need a branch new page fragment i use HTML rendering: loading templates, adding panes to the page, rendering custom controls.
btw when I can I prefer json because we can switch to client side object manipulation instead of just having an "update panel".