There is currently a number of open issues all around the same piece of code: inline form submission (inline_entity_form_process_entity_form()).
We run submission right after validation, in the same handler.
This causes ghost entities to be created when another form element (like the node title) triggers a validation fail.
It also doesn't with nested IEFs, and many other use cases.
I will mark them all as duplicate and test them once the new code is up.
We should introduce a custom #element_submit key that matches core's #element_validate one in behavior.
A custom submit handler will run all #element_submit functions.
The #element_submit functions will recurse, taking into account all IEF subforms.