Как лучше реализовывать баланс?
Создать таблицу для хранения платежей (пополнения списания) и считать баланс путем сложения операций? Или просто создать колонку balance и все? 
И то и другое. Колонка balance для быстрого получение этой информации, чтобы, к примеру, выводить на странице профиля. Но при любой операции с балансом эту колонку пересчитываем путем сложения. Так же не стоит её использовать при определении того хватает ли пользователю на какую-то операцию или нет.
Все операции должны быть логированы, соответственно таблица, выборка, подсчет.