Hello I know this is too much late for posting the answer but recently i stuck in the same problem and after too much debugging i found the solution...
when we convert product multi-select attribute to ui-component(like as category) the main issue is occurs at the time of loading the product-edit-form like according the above question at the time of creating of product it will save the data correctly but when we open product-edit-form the attribute gets the data in the from of comma separated string but the multi select ui component need the data in the form of array. So just Convert the String into the Array and your problem has been Solved :)
Here is the Piece of code which is used for solved the problem
In your DataProvider file you need to override getMeta()
public function modifyData(array $data) {
//here data is the array of UI Component
//we are modifying the data of the array
$model = $this->locator->getProduct();
$modelId = $model->getId();
$path = $modelId . '/' . self::DATA_SOURCE_DEFAULT . '/' . 'your_attribute_id';
$dataString = $data[$modelId][self::DATA_SOURCE_DEFAULT][$path];
$dataArray = explode(',', $dataString);
$data = $this->arrayManager->remove($path, $data);
$data = $this->arrayManager->set($path,$data,$dataArray);
return $data;
}
Hope It will help :)