Dzieje się tak, ponieważ daty są przechowywane w „czasie lokalnym”, a nie „utc”, chyba że poprosisz o:
moment(obj.date).utc().format('MM-DD-YYYY');
Tak więc różnica jest reprezentowana przez skonfigurowaną strefę czasową dostosowującą datę.
Zobacz UTC w dokumentacji.