There are a few issues here, first is that rollout controls need to be declared in a scope of a rollout. Group keyword means something entirely different outside that scope (i.e. the command to create a group of nodes, which is also the reason of the error message). You would have to create the complete rollout this way (look at rollout creator source code – while it has quite a lot of issues on its own, there is no need to reinvent the wheel). The second issue that could bite you in long term is that execute evaluates the supplied string in global scope, every variable you don't declare there but wish to have access to needs to be accessible from the global scope and any new non-nested variable becomes global too.
Anyway, feel free to use rollout creator for pieces of code like this where the resulting dialog is quite simple, and for anything more dynamic reach to .NET forms. Being able to work with collections of controls as objects makes it much more manageable, yet the .NET verbosity might be a bit off-putting.