All excellent points. I would point out a few things (in no particular order):
Obfuscation (and golfing, my personal passion) are dual-purpose programs. You are not only making sure that your program correctly solves the problem, but you're also attempting to have the code satisfy a constraint. This helps us write maintainable code because we become used to thinking about providing two deliverables in one package - a program and a work of code.
The key to mastering any toolkit is to understand the limits of that toolkit. Given that a programming language is nothing more than a toolkit, obfuscation and golfing provide an excellent way of exploring the oft-hidden areas. This gives us confidence that there are tools we haven't learned yet. While I don't use the inner workings of various built-ins that I've learned from golf, I have learned to look at another unexplored area - CPAN. There have been a rash of questions over the past few weeks regarding list manipulations. Many monks have provided answers using code they wrote. All of my answers involved List::MoreUtils.
As with any other skill, the more uses we put it to, the more varied practice we get. As practice is the key to mastery, the more practice the better. I would be hesitant to hire any developer who doesn't choose to exercise their programming skills in non-work endeavors. They just won't have the practice in.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?