A 'requried' field is a concept that only applies on the clientside (e.g. on the form). As you are creating the entity via the SDK (or plugin, or workflow) the clientside scripts are not invoked and so the required status of the field is not checked.
So it isn't flexibility as much as it is not possible to do.
Other constraints, such as field length, as concepts enforced at the DB level. Hence these will be invoked via SDK, plugin etc.
If you wanted to enforce the required fields it is fairly straightforward - add a pre create plugin. Check for values in desired values. If not found, throw an exception.