Well, it would be a good and more stable alternative to SLEEPing, e.g. in a game's main loop. Also, it would be possible to create flicker-free games (without screen tearing) when e.g. syncing for line 0 or something inside the upper or lower border.
I think the reason why your program fails to catch the line is because you try to catch EXACTLY the line. This can even fail on the C64 in assembly, if too many things are going on and you might just miss the line at exactly the desired time. But if it was a real BASIC command, it would make sure to use real interrupts or something like that, and it would be much more reliable.
If you would change the program to check a range, e.g. not one specific line but something like +/- a few lines, it would probably work in every case. But it would still be just a workaround for an otherwise nice BASIC command.