100% величина относительно родителя, у родителя высоты тоже своей нет, она не может быть высчитана, переход от 0 к ничему соответственно не может быть плавным. У тебя классический баян должен получиться. Если можно гарантировать что текст не будет выше какой-либо высоты (как в комменте 300 пикселей например) то проще всего менять max-height с нуля до этой величины, а так по хорошему текст надо кинуть в обертку, у нее менять высоту/максимальную высоту с нуля до ее scrollHeight, которая будет равна высоте ее контента - текста. Есть еще хак с grid-template-rows 0fr/1fr но не везде работает