Edit: I guess thewaywewalk's benchmark leaves me only with a readability argument ;)
Edit using Beaker's suggestion:
data = [1 1 1
2 2 2
3 3 3];
sz = size(data);
z = zeros(sz(1)*sz(2), sz(2));
for i = 1 : sz(1)
z((i-1)*sz(2)+1:i*sz(2), :) = diag(data(i, :));
end