It's not clear to me why compiling all userland code with -fstack-check would help. Couldn't you work around that by copying or creating an executable in assembly that doesn't write every 4 KB?
The issue isn't that a user can run their own code that can stack smash, rather that a user can exploit the smash to run their code in a privileged context (set-guid, i.e. sudo, su, etc.).
Well then you wouldn't be running code generated by -fstack-check, would you?