When data is deleted in a PostgreSQL database it is not actually removed. It remains in the database and the disk space is not recovered. A vacuum will help clean up deleted records and recover a little space. Given xTuple is mostly adding records to the database it is not likely to recover much space.
If you are a little adventurous, you could try this query which will list all the tables and their relative sizes. It will let you know which tables are the worst offenders (and whether you can actually do anything about it. If you are using Batch Manager you might need to change or remove the schema restriction, as Batch manager email tables can also get large.
SELECT *, pg_size_pretty(total_bytes) AS total
, pg_size_pretty(index_bytes) AS INDEX
, pg_size_pretty(toast_bytes) AS toast
, pg_size_pretty(table_bytes) AS TABLE
SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes FROM (
SELECT c.oid,nspname AS table_schema, relname AS TABLE_NAME
, c.reltuples AS row_estimate
, pg_total_relation_size(c.oid) AS total_bytes
, pg_indexes_size(c.oid) AS index_bytes
, pg_total_relation_size(reltoastrelid) AS toast_bytes
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE relkind = 'r'
WHERE table_schema = 'public'
order by total_bytes desc;