I have found that programming puzzles tend to be just that. Puzzles. They're fun sometimes and can keep your mind sharp if you having nothing else providing that edge for you, but in the course of having an actual job you should have plenty of puzzles to solve on a regular basis. If you don't, then it might be a good time to start looking for a job that does challenge you. If you're happy where you are financially/career-wise, then maybe puzzles are just the sort of thing to keep you creative and sharp without giving up the comfort of the immediate.
Personally, I've found rarely do the puzzles presented online actually solve, help solve, or teach me how to solve the problems I deal with from day to day. Most of the time, the solution to the puzzle is some clever programming trick that doesn't have any real practical application or a practical application applied in an extremely clever way.
To sum up, I'd say puzzles as a diversion are an excellent way to keep your mind limber and refreshed in the face of grinding, every-day work, but should not be necessary on a regular basis. If you're not challenged at work (or have no work to be challenged by), then puzzles are probably the best way to create "work" that forces you to think beyond what you know today.