Seems to me that both does the same thing.
Docs:
deferred.always()
deferred.then()
The big benefit of then (as of 1.8) is the capability to chain tasks explicitly because it returns a promise which will be resolved with the result of the callback(s)
Example from documentation:
var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
      return $.ajax( url2, { data: { user: data.userId } } );
    });
chained.done(function( data ) {
  // data retrieved from url2 as provided by the first request
});