AngularJS: Quando usar o serviço em vez de fábrica

Por favor, tenha paciência comigo aqui. Eu sei que existem outras respostas como:AngularJS: Serviço vs provedor vs fábrica

No entanto, ainda não consigo descobrir quando você usaria o serviço pela fábrica.

Pelo que posso dizer factory é comumente usado para criar funções "comuns" que podem ser chamadas por vários controladores:Criando funções comuns do controlador

Os documentos angulares parecem preferir a fábrica ao serviço. Eles ainda se referem a "serviço" quando eles usam fábrica que é ainda mais confuso!http://docs.angularjs.org/guide/dev_guide.services.creating_services

Então, quando alguém usaria o serviço?

Existe algo que só é possível ou muito mais fácil com o serviço?

Existe algo diferente que acontece nos bastidores? Diferenças de desempenho / memória?

Aqui está um exemplo. Além do método de declaração, eles parecem idênticos e eu não consigo entender por que eu faria um contra o outro.http://jsfiddle.net/uEpkE/

Atualizar: Da resposta de Thomas parece implicar que o serviço é para lógica mais simples e fábrica para lógica mais complexa com métodos privados, então eu atualizei o código do violino abaixo e parece que ambos são capazes de suportar funções privadas?

myApp.factory('fooFactory', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo; }

    return {
        setFoobar: function(foo){
            addHi(foo);
        },
        getFoobar:function(){
            return fooVar;
        }
    };
});
myApp.service('fooService', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo;}

    this.setFoobar = function(foo){
        addHi(foo);
    }
    this.getFoobar = function(){
        return fooVar;
    }
});

function MyCtrl($scope, fooService, fooFactory) {
    fooFactory.setFoobar("fooFactory");
    fooService.setFoobar("fooService");
    //foobars = "Hi fooFactory, Hi fooService"
    $scope.foobars = [
        fooFactory.getFoobar(),
        fooService.getFoobar()
    ];
}

questionAnswers(8)

yourAnswerToTheQuestion