We already know that ES HTTP/JSON API is NOT a REST, but nobody cares (marketing wins). I wrote about this few times.
But why a GET with body is used for querying explain API? It is against rfc2616, where body for GET has no semantics, i.e. body for GET method has no meaning and should be ignored.
I think that these two things are mixed together. ES has no REST API, but HTTP/JSON CRUD-like one. And I think that GET with body is a natural consequence by following CRUD-like pattern. It is ok, but please do it following http rules, too. And please don't call your's API RESTful.