Why does WP HTTP API switch the method (POST/PURGE) to GET when redirecting (302)?

The change of method to GET after redirect from POST, PURGE, BAN whatever, is perfectly legal and been there, and will be without WordPress (it has nothing to do with it, really). Welcome to the World Wide Web:

Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.

As a matter of rule, don’t expect a method to be kept after redirect, unless you’re able to modify the client software to do so.