Потому что imgui и nuklear это immediate-mode гуи, сейчас объясню разницу.
1) Исторически первым появился именно retained гуи, это когда у тебя каждый виджет (кнопка, текст и т.д.) это объект, который ты создаешь, т.е. есть форма, в ней виджеты и т.д., и все они существуют в явной форме и где-то хранятся. При этом у таких гуев есть очень важное свойство, они перерисовываются только при изменении, обычно нагрузка появляется только при действиях пользователя и ресайзе, это очень сильно экономит ресурсы. Примеры таких гуев большинство Qt, gtk, wxwidgets, и еще множество. Все они отлично используются именно для десктопных приложений, но их хер встроишь например в качестве меню в чит (потому что у них свой цикл работы, а игра обновляется каждый кадр).
2) Второй вариант это immediate гуи, в этом случае ты просто описываешь какие элементы ты хочешь с их параметрами. Им гораздо проще пользоваться, но у них много недостатков. Они обновляются каждый кадр, и это жрет очень много ресурсов, условно твой десктоп гуи на imgui будет жрать как слабенькая игра (потому что это так и есть, в твой апп даже nvidia будет инжектиться). Так же, на самом деле в imgui те же объекты существуют, просто они скрыты от пользователя, и там происходит тонна кеширований, чтобы это работало с приемлимой скоростью. Примеры таких гуи imgui, nuklear, в unity вроде тоже был. В общем эти гуи подходят для какого-то быстрого прототипирования, мелких инструментов, меню для чита, но для приложений их использовать идея не очень.