How to call custom jQuery plugins into the customizer controls

First, in order to enqueue JS in the customizer controls, you need to use the customize_controls_enqueue_scripts action. This is different than the action used to enqueue scripts into the customizer preview, which is what themes normally do via customize_preview_init or wp_enqueue_scripts. So in your snippet above, replace customize_preview_init with customize_controls_enqueue_scripts.

Secondly, in order to extend a control in the customizer you need to wait for the control to be initialized. Controls may be added and removed dynamically in the course of a customizer session, so you cannot just query the DOM once the page is ready. Your custom control should implement a corresponding JS wp.customize.Control subclass that is responsible for setting up Select2. For example, if you have:

class My_Select2_Control extends WP_Customize_Control {
    public $type="my_select2";
    /* ... */
}

Then you should have a JS file that also contains:

wp.customize.controlConstructor.my_select2 = wp.customize.Control.extend( {
    ready: function() {
        var control = this;
        wp.customize.Control.prototype.ready.call( control );
        // Set up select2 control in this.container...
    }
} );

Enqueue this file at customize_controls_enqueue_scripts with customize-controls and select2 as its script dependencies.