Tim Benoit replied in http://community.qlik.com/message/105948#105948 that the problem is that the heading takes the color or the first row.
I changed the load order so that one of the items that always pass the expression test are on top and ok for now. hmm... works this time...
It's a bug, or as QlikTech tells us, a "Working As Designed". There's no good solution that I know of, but sometimes a workaround is to add a total line and put it at the top, between the data and the heading. Then change your color expression to add if(dimensionality(),...). That avoids ever coloring the total row, and since the total row is on top, it won't color the column heading either. This isn't always practical, of course.
Edit: Looks like you already got your answer. I didn't see it before posting. I'm leaving mine up as additional information.