When plots are too complex, matlab starts to behave erratically just like here. I often try to apply a solution described here.
For your particular (and very nice) plot, I would modify the function by declaring an axes:
function [ax, ls, regions] = plotuncertain( t, y, cov )
ax = axes;
t = t(:);
y = y(:);
cov = cov(:);
a = ones(size(t));
regions(1) = patch('XData', [t; t(end:-1:1)], ...
'YData', [y + 2*cov; y(end:-1:1)], ...
'FaceVertexAlphaData', [0*a; a], ...
'FaceAlpha', 'interp', 'EdgeColor', 'none');
regions(2) = patch('XData', [t; t(end:-1:1)], ...
'YData', [y - 2*cov; y(end:-1:1)], ...
'FaceVertexAlphaData', [0*a; a], ...
'FaceAlpha', 'interp', 'EdgeColor', 'none');
ls = line('XData', t, 'YData', y);
and then call the function with:
[ax1, ls, regions] = plotuncertain( t, y, cov );
[ax2, ls, regions] = plotuncertain( t, y, cov );
set(ax2,'Visible','off');
linkaxes([ax1 ax2],'xy'); %or any (XLim,YLim) settings
This way, transparency in one axes is independent of the other.
EDIT
A way to better control the color blending is to convert each of the axes created in a dedicated figure into an image and then fuse them. One can use for example imfuse(im1,im2,'blend')
(image processing toolbox) or whatever function that mixes 2 images.
The way to extract an image from a figure is
F = getframe(gcf);
imwrite(F.cdata, 'image.png');
For sure, this solution is only suitable at the final step of a reporting process (I would definitively not use it for a scientific article - see the comments - but for spectacular presentations). It may also be more efficient to use an alternative software that better deals with transparency/OpenGL than Matlab does.