It’s used to report again to callers into the price estimation capabilities to be taught why the returned feerate was chosen. Descriptions for these causes are:
static const std::map<FeeReason, std::string> fee_reason_strings = {
{FeeReason::NONE, "None"},
{FeeReason::HALF_ESTIMATE, "Half Goal 60% Threshold"},
{FeeReason::FULL_ESTIMATE, "Goal 85% Threshold"},
{FeeReason::DOUBLE_ESTIMATE, "Double Goal 95% Threshold"},
{FeeReason::CONSERVATIVE, "Conservative Double Goal longer horizon"},
{FeeReason::MEMPOOL_MIN, "Mempool Min Charge"},
{FeeReason::PAYTXFEE, "PayTxFee set"},
{FeeReason::FALLBACK, "Fallback price"},
{FeeReason::REQUIRED, "Minimal Required Charge"},
};