Различные причины. Для одного просто лучше оценить заголовок запроса, прежде чем даже рассматривать тело. Подумайте об этом так: если вы отправите письмо другому человеку, он получит письмо, только если оно правильно адресовано ему. Если ему требуется проверка отправителя (аналогия с использованием токенов в запросах), а его нет - нам не следует открывать письмо.
Другая причина в том, что, например, запросы get не имеют тела. Таким образом, вы хотите упростить размещение токена для всех типов запросов.
Безопасно включать токен в заголовок, если вы используете https, см. этот вопрос