There are some interesting interactions between transparency and depth sorting. You're encountering them here.
At this point in your script:
set(fill_1,'FaceAlpha',0.5);
If you ask for the SortMethod of the Axes:
You'll get the answer "childorder". That means that it's simply drawing the objects in the order you created them.
But after this line:
set(fill_2, 'ZData', repmat(10, size(get(fill_2, 'XData'))));
you would get the answer 'depth'. That's because up until you executed that line all of your Z values were the same. If all of your Z values are the same, MATLAB will decide that you probably want 'childorder'. But when you moved the object fill_2 in Z, MATLAB decided that you probably wanted 'depth'. Those are just guesses that MATLAB is making based on your data. You can override them like so:
set(gca,'SortMethod','childorder')
Here's what it looks like with 'depth':
and here's what it looks like with 'childorder':
So why does that make the picture look different?
When we're rendering opaque objects with depth sorting, then some simple hardware on the graphics card called a "Z-buffer" can take care of figuring out what color each pixel should be. But when there are transparent objects and we're doing depth sorting, things are a bit trickier. We need to draw all of the objects in the scene in the correct, back-to-front order. The graphics literature is full of different algorithms for performing this sort. All of them have different strengths and weaknesses.
The sorting technique that MATLAB is using here is called Order Independent Transparency (OIT). It's nice and fast on the current generation of graphics hardware, but it struggles a bit when it encounters coplanar objects. You have a number of coplanar objects here. The obvious ones are the red and yellow patches. If you rotate your view into 3D, you'll see them flashing as the OIT struggles to figure out what order to draw them in.
But what about the blue line? That looks like it should be easy. It doesn't intersect any other objects. The issue there is that it is intersecting itself. It's kind of hard to see, but it's not drawing a line, it's drawing 700 dots which are all in the same plane and overlapping slightly. The OIT is trying to figure out what order it needs to draw all of these dots in.
In addition, OIT affects GraphicsSmoothing because they are both implemented using the same features of the GPU. This means that when you have transparent objects with SortMethod='depth', you lose your antialiasing.