Guys. I am going to answer my own question.
I found the solution by myself minutes after posting this.
The solution was to save the axes from the subplots:
ax{i} = subplot(3, 4, idx)
I wasn't aware that subplot indeed creates axes! (n00b move, I know)
The problem was that I originally saved axes in the form:
ax{i} = gca
which created an array of axes, yes, but when reading back the contents they were stored as structs, so basically I was assigning a struct to an axes handle inside xline while it was expecting a graphic object.
My question now is, why saving the axes as ax{1} = gca and reading it back in the form:
ax_array{1}
doesn't keep it as axes object?
So, this is what I wanted originally:
and the plots as expected: