Hulu reps have been quoted before saying it's because of licensing restrictions related to the content on other devices than PCs.
Having played around with it (I hacked together a gnash+ffmpeg port that's just sufficient to run Hulu on my own iPhone), they just have some logic in their flash scripts to prevent playing on unlicensed platforms. And in order to prevent direct linking to the FLVs, they use some obfuscating logic -- namely, they give you a string + a key and have you perform an AES-style operation using the two locally to get a time-expiring key to the file you want to play. They change the obfuscating pattern just often enough to make it annoying if you were, say, trying to keep up a Boxee script or update an AppStore application.
Having played around with it (I hacked together a gnash+ffmpeg port that's just sufficient to run Hulu on my own iPhone), they just have some logic in their flash scripts to prevent playing on unlicensed platforms. And in order to prevent direct linking to the FLVs, they use some obfuscating logic -- namely, they give you a string + a key and have you perform an AES-style operation using the two locally to get a time-expiring key to the file you want to play. They change the obfuscating pattern just often enough to make it annoying if you were, say, trying to keep up a Boxee script or update an AppStore application.