Depends on your definition of "builtin function" vs 'workaround'.
A full-window title is simply a title positioned with respect to an empty 'whole window' axis, as opposed to subtitles which are positioned with respect to subplots which take up only a fraction of the window at specific positions.
Therefore the 'builtin' way to add a title on an empty whole-window axis, is to simply add a title on an empty whole-window axis.
t = 0:0.01:2*pi;
hold on
s1 = subplot( 2, 2, 1 ); plot( t, sin(t) ); set( s1, 'title', 'Sine of t' );
s2 = subplot( 2, 2, 2 ); plot( t, cos(t) ); set( s2, 'title', 'Cosine of t' );
s3 = subplot( 2, 2, 3 ); plot( t, tan(t) ); set( s3, 'title', 'Tangent of t' );
s4 = subplot( 2, 2, 4 ); plot( t, cot(t) ); set( s4, 'title', 'Cotangent of t' );
S = axes( 'visible', 'off', 'title', 'Trigonometric Functions' );
hold off
In my opinion, this is as 'builtin' as it gets (in that, I don't think of setting a title on a main axes object to be any less of a builtin functionality than setting a title on the individual subplot axes objects).
If by 'builtin' you meant "I'd like to use a single-word command to do this instead of relying on built-in graph properties", then no, octave does not provide such a convenience function.