Don't know if this is really an OS X question, but:
less seems to insist that my terminal (whether I'm using the builtin Terminal or iTerm2) has more lines than are actually displayed, and so the top of whatever I'm
lessing is always off the screen.
My LINES environment variable matches the number of visible lines in the terminal.
I have a vague recollection that it didn't use to be this way, but has been this way for me for several months, at least.