How does update method in Widget class saves $instance array from Select tag?

When you create a widget you’re extending the WP_Widget class:

class Foo_Widget extends WP_Widget {

The actual saving of the values in the database is handled by the parent class, in the update_callback() method.

So all your widget needs to do is tell it the new values, which you do by defining the update() method.