I'd prefer to see it as an investment in yourself, so not really for "free". Also it's (probably) not like the company will make any money of the home assignment they give you.
I think it is better for everyone this way. It is more accurate, it is less pressure and less demanding on the candidate, and it doesn't require an engineer sitting there asking intro-CS questions to a stranger instead of working.