It allows an array to be stored as a string, particularly handy if you need to store data in a manner that does not require a set schema. Let's say I had four options for a plugin:
Array
(
[list_begin] => <ul>
[list_end] => </ul>
[list_item_begin] => <li>
[list_item_end] => </li>
)
If I really did not want to create four separate options in the wp_options table, I could serialize that array (it works for objects too) and write that as one long string to be stored as one option.
a:4:{s:10:"list_begin";s:4:"<ul>";s:8:"list_end";s:5:"</ul>";s:15:"list_item_begin";s:4:"<li>";s:13:"list_item_end";s:5:"</li>";}
Once that is in the table, you can use the unserialize() function to return it to an array for use in your plugin. If you look at the /wp-admin/options.php page, you will see a good bit of the WordPress internals and some other plugins handle data in this way.