This has had me stumped for hours but I finally got to the bottom of it. I will do a more comprehensive article on this subject at a later date, but here is the issue and solution for those who come across this.
When dragging a widget into the widget area in the admin panel it successfully drags and seems to save but if you do a refresh of that page the widget has been removed from the widget area.
When declaring the widget ID and Widget name they need to have a relationship, the id needs to be the same as the name but lower case and spaces substituted for hypens, so below is a correct declaration for a widget area:
register_sidebar(array( 'id' => 'header-login', 'description' => __( 'The widget area for the logon form'), 'name' => 'Header Login', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ));
I hope this helps as it wasted 3 hours of my day 🙂