Já havia feito isso, e o endpoint da API para exclusão é o mesmo que tenho usado para ambas as ações (apenas excluir e excluir e bloquear) — a única diferença está nos parâmetros utilizados com ele (block_ip, block_email, …), que mencionei acima.
Acho que finalmente descobri qual era o problema com minhas solicitações: a API do Discourse espera as strings ‘true’ e ‘false’ em vez de valores truthy/falsy. Minha culpa por não ter notado essa observação na documentação.
Isso provavelmente foi o que causou toda essa confusão.