I have some specific examples on my blog but to answer this in short - from my experience, you can use them interchangeably, but it depends heavily on what you are doing (and when you want events to happen). If you are deploying a control that is completely yours and you are not doing DOM manipulation or dynamic width/height adjustments, you should be able to use jQuery(document).ready(...) - however if you're interacting with third party or OOB functionality or manipulating the DOM, you should lean on _spBodyOnLoadFunctionNames instead.
If you want to read some detailed examples, please read my post and the detailed answer to this on my blog (link above) - but in short - _spBodyOnLoadFunctionNames runs after the DOM is loaded and rendered (usually after all assets, including images are done loading). jQuery(document)ready(...) runs as soon as the DOM is rendered (I ran into this and tested it when implementing a custom top-nav - with a 3rd party plugin loading images from another server).
Another note - always try to use jQuery.noConflict(); when working within SharePoint. In specific instances, jQuery doesn't interact well with SharePoint's $(...). You can read more about this on my blog (www.stephanrocks.com), and about jQuery.noConflict() on jQuery's site.
Hope this helps :) If you can be more specific about what you're doing, maybe I can help you decide which to use.
Have a great day everyone!