Hello,
There are a few reasons this may be happening. The API may be returning budgets with a status of REMOVED, which may not appear on the web interface. You can look at the "BudgetStatus" field to check this.
Additionally, the API may be returning both shared and unshared budgets, whereas the web interface is only showing shared budgets. Unshared budgets are tied to a single campaign and can't be shared across multiple, and may be treated differently on the web interface. You can look at the "IsBudgetExplicitlyShared" field to check this.
Regards,
Mike, AdWords API Team