The default terminal size is 80 columns by 24 rows. Making an assumption the rows/columns of a terminal are zero is certainly surprising and unreasonable.
Some questions;
Why is fish not determining the defaults from termcap/terminfo?
Why is it using xterm codes indiscriminately?
According to https://github.com/fish-shell/fish-shell/blob/a1fd9e1b851bd8... it knows what the defaults are, so it is obvious that the behaviour is overridden elsewhere.
So yeah. It's a bug.