I don't follow this idea - when it does not make sense, then why do you use it? It can be a signal of some issue in your code.
I don't use it, but sometimes it occurs, and there are lots of languages which ignore it, so it would be cool if plpgsql does it too.
If you do this, works
set search_path to public;;;
psql allows it, but it is a shell - not a programming language.
but if you do the same inside a block, it does not.
It is a different language. I have not too strong an opinion about it - it is hard to say what is the correct design when you should work with a mix of languages like SQL and Ada (PL/pgSQL), and when related standard SQL/PSM is not widely used. Personally, I don't see any nice features that allow it to accept dirty code. I have negative experiences when a language is tolerant.