There would need to be more arguments, if everything was unified into one function. In particular: for scrolling lines you need to know both the 'line number' and the coordinates (the scroll tracking doesn't work off coordinates along, it's a list currently indexed by line number measured in chars not pixels). Additionally, at least one of the puts variants appears to specify width+height limits (clipping maybe).
Then there's the issue of converting char xy to pixel xy - currently handled by the puts fns - it seems like changing the puts fns to take pixel xy args would require each caller to dp that transformation. Suspect that would bloat binsize.