Лично я бы, вероятно, оставил конструкцию такой, какая у вас есть.
Первый вариант (itm = itm == null? Itm.subItems (): emptyArray) кажется менее неприятным, чем другие, но мне все равно нравится ваш оригинальный.
Проблема в том, что с точки зрения другого разработчика, все остальное сделает ваш код менее очевидным. Если будет проходить foreach через коллекцию, я ожидаю, что в коллекции будут (по крайней мере, обычно) элементы, содержащиеся в ней. Если коллекция может быть пустой, это не будет очевидно для других людей без комментариев (для написания которых потребуется больше времени, чем для проверки if).
Выполнение любого из хаков, чтобы избежать проверки if, кажется, что вы пытаетесь быть слишком умным.