You can fix the problem I described above by saving the text labels' positions and then restoring them after invoking format_ticks(). The following code could be shrunk a tad, but it's general enough in case you are using any type of units for the Position property.
% Save label positions
xl = get(gca,'xlabel');
yl = get(gca,'ylabel');
orig_label_units = get( xl, 'Units');
set([xl yl], 'Units','pixels');
xp = get( xl, 'Position');
yp = get( yl, 'Position');
% Generate the text object ticks (changing labels' Position):
[hx, hy] = format_ticks(gca,'{}','{}')
% Restore original label Position and Units properties:
set( xl, 'Position', xp);
set( yl, 'Position', yp);
set([xl yl], 'Units', orig_label_units);
But when I add X and Y axis labels, they are positioned on top of the new text object ticks when MATLAB detects that the axis doesn't have proper axes ticks anymore.