I was able to successfully write my schema with 3 levels, here's an example:
zui.object({
id: zui.string(),
title: zui.string(),
description: zui.string(),
price: zui.number(),
imageUrl: zui.string().url(),
categoryId: zui.string(),
modGroups: zui.array( //modGroups array
zui.object({
id: zui.string(),
title: zui.string(),
splitsAllowed: zui.number(),
modMinReq: zui.number().min(NaN),
modMaxReq: zui.number().max(10),
modFreeQty: zui.number().max(10),
modifiers: zui.array( //modifiers array
zui.object({
id: zui.string(),
title: zui.string(),
extraPrice: zui.number(),
isDefault: zui.boolean(),
isIncluded: zui.boolean(),
showForSplits: zui.boolean(),
imageUrl: zui.string().url()
})) //modifiers array
})) //modGroups array
})