Simply moving interface code to a separate file does not exclude the non-interface code from GPL.
Well, actually, that depends on how you look at it. I'm not saying that a separate file is necessarily required, but yes, adding some form of separation between can indeed make the code a separate work. The important question is whether the separate code is a usable piece of work on it's own, without the interface portion.
Take Bad Behavior again (it's just such a good example here). It has a generic interface to that separate piece of work. The package includes several plugin interfaces to hook that code to several different platforms. The Bad Behavior code itself is clearly separate and can be used separately from the GPL'd WordPress interface entirely, because it can be used with other platforms via these different interfaces.
that would seem to make it very easy to circumvent GPL licensing, and the intent of the licensing.
That depends on what you define the "intent" of the licensing as, and on that topic you start getting into matters of philosophy rather than law.
More to the point, it doesn't mean that anything is "circumvented". If I write a piece of code entirely on my own, then it can be under any license I wish. I own that copyright, it's mine to do with as I please. If I then write a plugin to interface my code to WordPress in some fashion, does that mean that my code is retroactively forced to be GPL'd? What if somebody else writes the interface instead?
The sane answer in both cases is no, I can choose whatever license I want for the code that I wrote from nothingness.
Yes, I am aware that the Free Software Foundation has a different opinion on this topic (I have had email conversations with some of them on this exact topic, in a different circumstance), but their opinion has no legal basis in either the wording of the license or in actual case law.