Синтаксис if / then / else / end сам по себе прост, но когда вы встраиваете итераторы в подвыражения, вы получаете «комбинаторное» поведение, которое вы заметили.
Другими словами, каждое вхождение .[]
расширяется независимо от других, когда оно встречается.
Возможно, вам будет легче понять, если вы начнете с одного итератора, например
echo '[0, 1, 2]' |
jq '.[] | if . == 0 then "zero" elif . == 1 then "one" else "many" end'