Here are my thoughts. If I need a quick UI that I'll only use a couple of times or just need as an example, then I'll use GUIDE. This gives quick layout and easy setup to get fast results.
For anything that needs to last for any time at all, I'll skip GUIDE and go directly to programmatic. Programatic UIs afford the flexibility of being able to code however you like, organize however you like, and in general will use more modern syntax that is easier to follow and faster. Whether I make a fully object oriented UI or just use nested functions depends on the complexity.
It will take a little longer to learn how to lay out UIs programmatically but once you get the hang of it, it's fast enough and in some ways actually scales better. How quickly can I add 10 evenly spaced check boxes?
h = gobjects(10,1);
for ii = 1:10
h(ii) = uicontrol('Style','Checkbox','Units','normalized','Position',[0.1 (ii/10-0.1) 0.1 0.1]);
Now I want to check the odd ones?
This would be way more work in GUIDE.