I've never been asked to hand in any home assignment for a job interview, but I have been asked to do some "live coding" while their employees sat and watched; that was somewhat unpleasant as well. But I guess it beats a huge (unpaid) home assignment.
Home assignments should be short and sweet, it does not take a huge complicated task to see who can and cannot write programs. There are differences in ability of course even among "good" programmers, but the main difference is between those who truly cannot do anything, and those who can.