Because plot is a high level command and will clear a lot of things, unlike the line function (which is what plot is calling anyway). Using hold will work:
hax = axes;
x = linspace(0,3);
hax.Title.String = 'TITLE'; % titling before plotting (doesn't work)
hold(hax,'on')
y1 = sin(5*x);
plot(hax,x,y1)