There are no rules that say that they can't do that in the official NBA rulebook. The only time the official "scoreboard" score is dispositive is if the officials can't agree on what happened. Otherwise they are free to make those decisions and I don't see anything from them doing it retroactively.
Here is exactly what happened. Rockets up 88-78 with 50 seconds left. McGrady gets fouled. They give him 2 free throws, which he makes. Scoreboard shows 90-78. Timeout. Back from timeout. Much talking, refs, Seattle coaches, etc. The delay is so long, the Rockets announcers apparently forget. They notice nothing odd when the refs give the ball to the Rockets to throw in. That was the fix: no time elapsed, no plays happened, they just gave the ball to the Rockets instead of the Sonics. A second or two after the inbounds, the scoreboard reverts to 88-78. My guess is, if McGrady had missed either shot, the refs would have been screwed, because play would have elapsed since the mistake. As it was, Yao got fouled and made both FTs.
Awesome I just don't get it. I mean not only is it smack dab in the middle of a few sentences about the game on the front page, but the Chronicle recap mentioned it and there is an entire game thread right here that discussed it in realtime.