Por que usar "aplicar"?

Este trecho foi retirado de Segredos do JavaScript Ninja.

function log() {
    try {
        console.log.apply( console, arguments );
    } catch(e) {
        try {
            opera.postError.apply( opera, arguments );
        } catch(e){
            alert( Array.prototype.join.call( arguments, " " ) );
        }
    }
}

Por que devo usar o Apply e qual a diferença entreconsole.log.apply(console, arguments) econsole.log(arguments)?