i am a fan of #pragma once. the main reason is that it avoids the class of bugs where you copy a header and forget to change the #define and then sometimes the header is empty upon use, and you end up having to use cpp output to debug it.
i'd be ok with using it anywhere -- AFAIK the compiler support is available everywhere. note that it is already used in libpcap, bind, libuv, and as a test for xlint, in our tree, for consumed components. .mrg.