First of all, thanks to @toscho for the detailed answer.

This is a simple example for those who are searching for a simple solution and default widget options:

    $active_sidebars = get_option( 'sidebars_widgets' ); //get all sidebars and widgets

    if(isset($active_sidebars['sidebar-id']) && empty($active_sidebars['sidebar-id'])) { //check if sidebar exists and it is empty
	    $active_sidebars['sidebar-id'] = array('widget_name-1', 'other_widget_name-1'); //add two widgets to sidebar
	    update_option('sidebars_widgets', $active_sidebars); //update sidebars
    }

*Note 1: You can get `sidebar-id` going to widgets menu and inspecting the wanted sidebar. The first `<div id="widgets-holder-wrap">`'s `<div>` child has the `sidebar-id`*.

*Note 2: You can get the `widget_name` going to widgets menu and inspecting the wanted widget. You'll see something like `<div id="widget-6_widget_name-__i__" class="widget ui-draggable">`.*

I wish it helps.