Два метода абсолютно одинаковы. Я полагаю, что эти функции существуют для удобства, так как есть несколько случаев, когда каждый метод полезен.
Например, чтобы создать новый cv::Mat
того же размера, что и другой, его удобнее писать и легче читать
cv::Mat new_mat = cv::Mat(old_mat.size(), old_mat.type())
чем
cv::Mat new_mat = cv::Mat(old_mat.rows, old_mat.cols, old_mat.type()
Кроме того, я считаю, что нужно меньше вызовов функций. И это более удобно в использовании и легче читать с меньшим количеством вызовов функций
for(int i=0; i<old_mat.rows; i++)
for(int j=0; l< old_mat.cols; j++)
, чем
for(int i=0; i<old_mat.size().width; i++)
for(int j=0; j<old_mat.size().height; j++)