I think it really depends on how your site is coded and what works best for your implementation.
Are you working with a traditional website? A Single Page Application website? Do you need to trigger tracking as soon as the page starts loading? After the page is fully loaded? Do you have data dependencies that make the implementation more complicated?
Some of our implementations I use Window Loaded, but on one of our sites, there was so many additional calls being made that tracking was delayed too long... unfortunately, DOM Ready was too soon for all the needed info to be ready in our data layer... we actually had to create a custom event trigger to support our needs (this is sort of a rarity, but it just shows that there is no "one solution fits all" and you need to try a few things out before you settle on the trigger).
1. DOM Ready should fire when the code is on the page, but not necessarily rendered
2. Window Loaded should be when all the content has completely loading
^ both of the above should be good starting points (but they need to be tested to ensure the correct results for you)
3. Lib Loaded is basically in the head of the document, I use this to load resources and some things before I do my analytics calls
4. Page Bottom is sort of the opposite of Lib Loaded, where the call should be the last item in the body (BUT it only works for synchronous implementations, with the _satellite.pageBottom() in your source code... if you don't have that, this won't work.)