First of all, the jQuery UI classes in the documentation only apply after document.ready. You can style them all you like, but you will not get rid of the flash of unstyled content. The classes are useful for theming the UI, not for affecting how things look before the UI is in place.
Second, the noscript tag is basically to be avoided, for a wealth of reasons:
1) It doesn't really tell you if javascript is on or not. For example, it could be enabled in the browser but blocked by a firewall.
2) It's a block level tag, so there are only certain places where it can validly appear. It's not an all-purpose solution.
3) The tag doesn't differentiate between degrees of javascript implementation on different systems.
You were closer to the best practice in your original post. The trick is to do both the hiding and the showing in javascript. First, style your page so that it will look acceptable with javascript disabled. Then, to prevent the flash of unstyled content, do the hiding of the ugly elements in javascript before document.ready (this is the critical part) by assigning a class to the html element:
jQuery('html').addClass('blahblah');
Because the html element exists already, it's valid to work with it before document.ready.
Then, like Nick says, put the offending elements in a div with the class "startsugly" and then put a line in your css that hides the offending elements:
.blahblah .startsugly {display: none;}
The point here is that the display:none only comes into play when javascript is enabled. Users with it disabled will still be able to access your content. Then, after document.ready, put in your jQuery UI "pimping" functions, and show the offending element again:
$(".startsUgly").show();
although if it's content that's only conditionally visible in an accordion or a tab structure, this last step might even be unnecessary.