What kind of restrictions are you thinking about here? I don't know Esterel very well but Céu is very restrictive in order to ensure that responses to events don't loop. There are no recursive functions, no dynamic allocation, etc.
Your impressions about Céu are very accurate, but I would like to add some remarks.
There are three possible perspectives about the language: the "static", presented in the SenSys'13 paper; the "dynamic", presented in the Modularity'15 paper; and also the actual compiler publicly available.
The static version shares similar restrictions to Esterel, as you both pointed out.
The dynamic version allows dynamic allocation inside lexical pools, keeping static memory management (no GC or "free"), but with possible unbounded memory usage.
The actual compiler is even less restrictive and just gives warnings for unbounded loops, recursive calls, and so on.