I always produce flattened KLists. I have a filter that takes care of this:
org.kframework.parser.concrete.disambiguate.FlattenListsFilter
Even with the new parser, I've set it up so you don't get nested KList, and under KApp.child, you will always find a KList. There may be exceptions, like meta-variables of sort KList, or functions which return KList.