__BYTE_ORDER is not required for v8 to compile.  If it is not defined (and __LITTLE_ENDIAN is also not defined), then it will take the LE case.

Basically in the C preprocessor you can do

#if BLAHBLAHBLAHASHS == JASDJKADSKJ
  // This code here will be executed.
#endif 

Since both are undefined they equal each other.  This is definitely confirmed as the case on my Mac and Windows builds of v8 (__BYTE_ORDER is not defined).

I have seen this code in V8 before and I believe it is not really doing anything.  V8 does not actually run on any big-endian architectures (see https://groups.google.com/group/v8-users/tree/browse_frm/month/2011-01/0ad47bc3e495799a?rnum=21&_done=%2Fgroup%2Fv8-users%2Fbrowse_frm%2Fmonth%2F2011-01%3F ).   __BYTE_ORDER should come from <endian.h> which is a glibc only thing, but I don't see V8 including it anywhere anyway. Maybe there is something specific about their ARM build environment that defines it, or it is pulled in indirectly through other includes.  On an ubuntu machine:

    $ gcc -v
    gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
    $ gcc -dM -E - < /dev/null | grep BYTE
    #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__

    $ echo '#include <endian.h>' | gcc -dM -E -  | grep BYTE
    #define __FLOAT_WORD_ORDER __BYTE_ORDER
    #define BYTE_ORDER __BYTE_ORDER
    #define _BITS_BYTESWAP_H 1
    #define __BYTE_ORDER __LITTLE_ENDIAN
    #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__

Perhaps it's possible that something (for example some of the socket headers) are pulling in <endian.h> ?

I think for Node it would be better to use the defines I have written in v8_typed_array_bswap.h, since I have specifically looked at this problem several times before (I also wrote this code for Chrome) and tried to choose the best approach.