Which of the two is grammatical or is better in style — "report for work" or "report to work"?
I've always used the first, "report for work", following the pattern of "report for duty", which I always hear law-enforcement folks use.
Both are equally correct. You report to (your place of) work in order to report for (your assigned) work, so they imply each other and are equivalent in how people use them. Notice that "work" has a different meaning in each phrase (one is a location/building, one is a set of tasks or duties), even though the overall phrases end up having the same meaning.
As an aside, only "report for duty" is correct, since "duty" is not a place that you can report to, making *"report to duty" ungrammatical.