I don't write compilers and/or preprocessors but from my limited point of view I can't really see how a check like that would work in the case of PBP. How would the compiler or preprocessor be able to "match" a RETURN statement with a GOSUB?

You can easily have several RETURN statements and multiple labels within a single subroutine.

Alright, if there's one (or more) GOSUB statements in the program but not a single RETURN statement you know you have a problem but apart from that I'm not sure how it would work.

In your case I suppose the following represents what happened, the RETURN from Label1 got deleted and is missing but that isn't NECCESARILY an error, the code is still correct.
Code:
Label1:
  ...code
  ...clode

Label2:
  ...code
  ...code
RETURN
Out of curiosity, would you share more details about what happened?

/Henrik.