Ваше описание того, что вы делаете, звучит нормально. Выбор размера входного элемента влияет только на эффективность. Байты заполнения минимизируются, если длина каждого входного фрагмента (кроме, конечно, последнего) кратна 3.
Вам необходимо показать нам как код вашего сервера, так и код вашего клиента. Альтернативно: на сервере запишите входные данные и переданные фрагменты. На клиенте зарегистрируйте полученные кусочки. Сравните.
Любопытство: почему бы вам просто не b64 кодировать всю строку, разделить кодированный результат, как вам нравится, передать фрагменты, на клиенте собрать части, используя b''.join(pieces)
и b64decode, что?
Дальнейшее любопытство: я думал, что содержимое пакета UDP может быть любым старым двоичным набором байтов; зачем ты вообще кодируешь base64?