Okay, doing more digging, I'm guessing it comes down to sketches being compiled with ulibc, while the actual full Linux distro uses glibc. Looking more through the Arudio app directory structure, it seems it ships with a uclibc version of pokey linux, which it uses as its toolchain for compiling the sketch.
I'm going to guess out loud that it's already been thought of how to switch toolchains to one based on glibc, and I would think, without having tried it, that if the intermediate cpp file can be grabbed and compiled under a different toolchain, would that work? I'm guessing there is still "magic" in how the board finds the /sketch directory, but one step at a time...
yes, the reason is uclibc vs eglibc. There's no real magic in /sketch dir - the wrapper program (clloader) has it hardcoded, so does the Arduino IDE upload script.