Just add ISNULL to your balance and it will create two zeros which will be eliminated by DISTINCT. I hope this helps (change in bold)
SELECT distinct ecpc.ecpclaim_key AS claim_key
,ecpc.ecpclaim_patient_last_name AS patient_last_name
,ecpc.ecpclaim_patient_first_name AS patient_first_name
,(SELECT MIN(ecpservice_date_from) FROM tbl_ecpserviceline WHERE ecpclaim_key = ecpc.ecpclaim_key) AS DOS
,ecpc.ecpclaim_carrier_id AS payer_id
,ecpc.eCPClaim_carrier_name AS payer_name
,(CASE WHEN eCPLedger_Master_Transaction_Type IN (1001) THEN ecpledger_master_transaction_amount END ) AS Charges
,(CASE WHEN eCPLedger_Master_Transaction_Type IN (1004,1007) THEN (SELECT DISTINCT ARRAY_TO_STRING(ARRAY_AGG(ecpledger_master_transaction_payment ), '') FROM tbl_ecpledger_master WHERE eCPLedger_Master_Transaction_Type IN (1004,1007) and ecpc.ecpclaim_key=ecpclaim_key )
END ) AS PrimayPayment
,COALESCE(LM.ecpledger_master_claim_balance, 0.00) as balance
FROM
tbl_ecpclaim ecpc
inner JOIN tbl_ecpledger_master LM ON ecpc.ecpclaim_key=LM.ecpclaim_key
WHERE ecpc.ecpclaim_insurancetype='P'
GROUP BY ecpc.ecpclaim_key,lm.ecpledger_master_claim_balance,lm.ecpledger_master_transaction_type,lm.ecpledger_master_transaction_amount limit 10