Because .factory is slightly more general (can return non-objects), and it can't be called .service because backward compatibility.
var $timeout = $window.setTimeout;
return $timeout;
}).service('$timeout', function($window) {
// $timeout is a function, not an normal object. Why would I use a constructor
//function to provide it?
});