A couple weeks ago I'd have agreed with this wholeheartedly. The complexity ceiling in particular. But then I found myself having to quickly do a bunch of "creative coding" to come up with some realtime visuals to support a stage show. I auditioned a bunch of things like processing.js, Rust equivalents etc., but also Max/Jitter, TouchDesigner, and something called Isadora. Those latter three are all basically no-code environments for visual and audio programming. They have building blocks like wave generators and dividers and things, they look (to a musician) like a modular synth but it's absolutely programming, and can be at a fairly low level (you find yourself implementing logic gates naturally, for example).
Anyway... I thought I'd struggle without a language to call into but in fact they work really well. I settled on Isadora (on a metric of fastest-time-to-cool-output) and I haven't hit a limit yet.
So my reason for writing all this is that I think, and I know I am rambling here, that domain specificity is an important factor in the success of a low/no code tool. Generality exposes the complexity ceiling.