Разницу довольно легко объяснить. Когда вы используете ResponseEntity, вы имеете полный контроль над содержанием вашего ответа. Вы можете изменить свои заголовки, код состояния ... Если вы не используете ResponseEntity в качестве типа возврата метода контроллера, Spring "автоматически" создаст ResponseEntity по умолчанию.
Итак, самое большое преимущество использования ResponseEntity в том, что вы имеете полный контроль. Недостатком является то, что это более многословно, чем позволить Spring работать волшебный c.