It would therefore seem that I could do this:
I don't see why you would think so...would you expect
on its own to be successful unless size(x1,1)==size(x2,1)??? How would it be supposed to work otherwise?
The simplest way out of your (basically self-created by overthinking the problem) dilemma is to simply do sotoo..
then salt to suit line styles, etc., etc., etc., ...
Alternatively, you can use the feature of plot that ignores NaNs and pad the shorter of x1/x2 and y1/y2 with NaN to make them the same length and then plot the concatenation in a single call. Presuming it's x2 that's the shorter (can always write logic to handle it programmatically; this is just demo purposes code),
hAx=plotyy([x1 x2],[y1 y2],x3,y3);
Now you can concatenate as they're same length; plot will ignore the NaN silently.