The two reasons for using either one are either:
a) to attach handlers to DOM elements that may not yet exist in the DOM.
b) to attach a handler to a single element or small group of elements, listening for events on descendent elements, instead of looping through and attaching the same function to 100 individual elements in the DOM.
For the most part, live is now generally discouraged in favor of delegate (also for reasons explained in the article). In fact, here is the description for .delegate() from the jQuery docs:
Delegate is an alternative to using the .live() method, allowing
for each binding of event delegation to specific DOM elements.