Одна из ошибок заключается в том, что find | du будет добавлять повторяющиеся результаты, например, с помощью структуры каталогов foo/bar/baz, это эффективно сделает «du -chx foo foo/bar foo/bar/baz». Это подсчет foo/bar/baz dir 3 раза. Однако это будет ошибкой на высокой стороне, поэтому не объясняет, что вы видите.
Вторая проблема - количество аргументов, которые вы передаете du. В случае поиска у вас будут тысячи аргументов, а xargs будут обрабатывать их в кусках. На самом деле вы не видите общее количество всех файлов, но промежуточный итог для их части. На этом пути было бы еще несколько промежуточных итогов. Прочтите man-страницу для xargs, в частности -n (max args) и -s (максимальная длина командной строки)
Нормальная вещь здесь - не полагаться на суммы для одного вызова 'du', но делать суммы в другой команде в вашем конвейере. Однако, как только вы попробуете это, вы столкнетесь с первой проблемой, о которой я упоминал, - вы рассчитываете каталоги несколько раз.