There are several factors which weigh in on whether or not to use AJAX vs hiding the element.
The advantages of using AJAX are that you can load the template of your page, and all the static content letting the browser render the page before the dynamic content is retrieved by the client. This gives an advantage if you need to load content from a database, or calculate an output. Basically the advantage is if you're loading something big, or something that may take a bit to retrieve, you should use AJAX after the page is loaded to allow the user to wait less to see results. Another advantage is that you can display results in realtime, and you can give progress reports to the client(ex. progress bar), or you can load search results in realtime as they are loaded from a source(db,google,facebook,etc).
The advantage of using hidden elements is that you'll take up less HTTP requests/responses to load a single page. If you just need to load a users name, or short biography and some links, you should load this with the template. But if you need to load results of all the users latest blog posts you should use AJAX for this. Using hidden elements is easier to implement, but alone cannot update in realtime. Also, a side note, this isn't "hackish" whatsoever. jQuery is does this for many things, like animating between elements, or jQuery-UI tabs which just hide inactive tabs. This is basically the intended purpose for hidden elements.
The question shouldn't be which to use, but when to use either of the technologies for each specific intended purpose. Consider these pros and cons, and you should be on the right path. When you don't need AJAX, you probably shouldn't. It can become wasteful if overused.