Ok, I've been doing some research on this game in preparation for a run. I've only read really vague things about how to max your score in surfing, so I played around a bit to try and figure it out myself.
What I found was that your internal score is stored in 00cf-00d0. The byte 00d0 is used to determine your final score. So basically, you divide your internal score by 256 (rounding down), then multiply by 0.2 to get your final total score.
The game limits your final score to a maximum of 9.0.
So with the memory window open, I could watch how the internal score accumulates:
1 point per frame going 0 degrees = horizontal forwards
1 point per frame going 30 degrees
2 points per frame going 60 degrees
3 points per frame going 90 degrees
4 points per frame going 120 degrees
7 points per frame going 150 degrees
8 points per frame going 180 degrees = horizontal backwards
3 points per frame in the air
Bonus for being near the surf, average 0.3-2 points/frame depending on how close you are
Note that being in the air is always 3 points per frame, regardless of your direction or where the surf is. So doing a jump while you're heading backwards is a waste of points--you'd get more just for surfing backwards. As far as I could tell, there's not a penalty for wiping out.