Seems to me that both does the same thing.
Docs:
deferred.always()
deferred.then()
It would seem that deferred.then() allows you to pass two separate callbacks for success and failure, whereas deferred.always() takes n number of callbacks which will all be called regardless of the outcome of the initial event.
I would say use deferred.always() in the cases where success/failure of the initial event are not important