1. Если блок .when() содержит внутри дочерние .choice() блоки, то такие дочерние блоки .when()/.otherwise() нужно завершать командой .endChoice().
Нельзя использовать .end() для завершения дочерних .choice() блоков.
Такие блоки блоки нужно закрывать с помощью .endChoice().
2. Если блок .when() содержит более сложный блок, (например, .loadBalance()), то такой блок нужно завершать командой .endChoice().
Не удастся закрыть .when() блок, имеющий дочерний .loadBalance() блок с помощью .end().
Это можно сделать только с помощью .endChoice().
3. Можно не закрывать .when()/.otherwise() блок, когда он содержит лишь примитивные блоки-обработчики внутри. Но если после блока .choice() стоят какие-либо другие обработчики, то его нужно закрыть с помощью .end().
Документация: https://camel.apache.org/components/3.12.x/eips/choice-eip.html