Да, опционален, но чтобы выкрутиться замечу, что я писал про корректность заголовков а не одного конкретного, хотя имел ввиду конечно accpet) и ошибся )
обычно так делают просто по привычке, вычитывая ответ через ioutil.ReadAll. через декодер как бы толковее. однако, если делать через декодер, ничего не делая дальше, закрадывается довольно противная проблема
если json после последнего символа содержит ещё какие-то (например перевод строки) и декодер его не дочитал, то закрытие тела переведёт соединение в состояние "закрыто" и не позволит его переиспользовать логике кипалайв