Почти итоговый вариант исправления этого бага уже сделан. Поскольку отступы (paddings) в макете нижней панели указаны как 16 условных пикселей слева и 16 условных пикселей справа, пришлось заменить вызовы функций getCompoundPaddingLeft и getCompoundPaddingRight на константы, так как они не дотягивают даже до четырех символов после переноса строки.
Да и в целом внутренний StaticLayout оказался забагованным, пришлось создавать внешний StaticLayout внутри функции onMeasure.
В результате получаем удобное текстовое поле, которое больше не оставит так много пустого пространства в самых неподходящих ситуациях.