The fact that secession (the more proximate cause of the war) is about slavery is obvious. Alexander Stephens called Slavery (and racial inequality) the 'cornerstone' of the confederacy. The Secession ordinances of just about every confederate state cite their desire to protect slavery. Wartime southern propaganda is redolent with mentions of 'abolition hordes.'
In the North things are admittedly less simple -- the same nation that went marching to war singing 'John Brown's Body' was deeply uncomfortable with emancipating slaves (at first). Yet just because the civil war did not start as a war for abolition does not mean it wasn't a war against slavery. To use the terms of the time, it was a war against slave power and the rebellion that power had spawned, whether or not it involved immediate abolition.
These things are obvious. The effects of the war are even more obvious. And I think that's one reason why people resist saying that 'slavery* caused the civil war.' It's obvious. And many people, particularly intelligent people, resist obvious truths.
I can think of two reasons for this.
Firstly, searching for hidden truths flatters our intelligence. Not being blinded by popular lies like the masses of sheeple makes us feel special. It certainly made me feel special when I was younger; really this is one reason I was a lost causer for a bit -- the lost cause told me that I was smarter than my teachers, or the other kids in my IB history class.
Secondly, the idea that the truth is hidden accords with our notion that the truth must be difficult to discover and hard to understand or relatedly, that the world is a complex place. This is not unrelated to people flattering themselves. After all, if the world is complex, understanding it is a formidable task left to serious and independent thinkers.
If you assume that the world is complicated, there's a way in which the civil war being about slavery seems like an easy answer -- there's something incongruous about the simplicity of the cause and the immensity of the result. A laundry list of issues (internal improvements, the homestead act, the tariff) can be tacked on to slavery to make the war's causes seem suitably complicated.
Perhaps more importantly, there's an assumption that the war is morally complex. Now the civil war was no a comic book struggle that pitted Northern Freedom against southern tyranny, but the reality of the matter is that the Confederacy existed expressly to maintain slavery and white supremacy. Whatever the union's failings, 'slavery forever' was not it's rallying cry. And that's not a subtle moral distinction. With the exception of (maybe) WWII, grown-up people do not believe (or at least pretend to not believe) that things are ever that simple. So the (horrific) racism endemic in the North is used not as a caveat but as a fact that makes the war morally complicated, less black and white.
*Meaning here, 'A variety of controversies about slavery, including it's expansion to the territories, the fugitive slave law and the balance of power in congress led to the election of Abraham Lincoln, an anti-slavery but -not- abolitionist candidate, which in turn caused the secession of the South, which wished to protect slavery.'