Index: src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php
===================================================================
--- src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php	(revision 49555)
+++ src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php	(working copy)
@@ -605,6 +605,11 @@
 			$item->post_title = $item->title;
 		}
 
+		// 'classes' should be an array, as in wp_setup_nav_menu_item().
+		if ( isset( $item->classes ) && ! is_array( $item->classes ) ) {
+			$item->classes = explode( ' ', $item->classes );
+		}
+
 		$item->ID    = $this->post_id;
 		$item->db_id = $this->post_id;
 		$post        = new WP_Post( (object) $item );
Index: tests/phpunit/tests/customize/nav-menu-item-setting.php
===================================================================
--- tests/phpunit/tests/customize/nav-menu-item-setting.php	(revision 49555)
+++ tests/phpunit/tests/customize/nav-menu-item-setting.php	(working copy)
@@ -906,7 +906,7 @@
 			'target'           => '',
 			'attr_title'       => '">att \o/ o\'o empted <b>baddie</b>',
 			'description'      => 'Attempted \o/ o\'o <b>markup</b>',
-			'classes'          => '',
+			'classes'          => 'class-1 class-2',
 			'xfn'              => '',
 			'status'           => 'publish',
 			'original_title'   => '',
@@ -940,6 +940,7 @@
 		$expected = apply_filters( 'nav_menu_attr_title', wp_unslash( apply_filters( 'excerpt_save_pre', wp_slash( $post_value['attr_title'] ) ) ) );
 		$this->assertSame( $expected, $nav_menu_item->attr_title );
 		$this->assertSame( 'Attempted \o/ o&#8217;o markup', $nav_menu_item->description );
+		$this->assertSame( array( 'class-1', 'class-2' ), $nav_menu_item->classes );
 	}
 
 	/**
