クレジットテーブルに複数の行があります。これにより、問題の原因となるグループの前に複数の行が作成されます。 group byを取り出してすべての列を選択すると、これを確認できます。
サブ参加でグループ化すると、この問題は解消され、グループ化の前に顧客ごとに1つの行ができます。
SELECT
customers.id as id,
customers.cust_name AS customer_name,
SUM(cust_debit.debit_amount) as debit,
SUM(cust_credit.credit_amount) as credit,
(SUM(cust_debit.debit_amount)) - (SUM(cust_credit.credit_amount)) as balance
FROM customers
LEFT JOIN cust_debit ON customers.id = cust_debit.cust_id
LEFT JOIN (
SELECT cust_id, sum(credit_amount) as credit_amount)
from cust_credit
group by cust_id
) cust_credit ON customers.id = cust_credit.cust_id
GROUP BY customers.id
ORDER BY customers.id