I found compilers to be one of the most valuable subjects I studied in grad school.
Unlike many other disciplines in computer science, compilers are a "mature" field: we're not doing a whole lot to make compilers better these days, since we've already "solved" the major issues. (This isn't to say we can't still make progress, just that we're not bounding ahead into vast uncharted territory, as in many other areas.)
This means a compilers course is mostly practical application of software engineering, and less theoretical analysis. In fact, I still employ some of the software engineering methods learned from compilers today.
The other major benefit of such a class is it bridges a gap most people don't explore between the high-level code we use to write most software today and the low-level behavior on the chip. In an architecture course you can learn about the low-level optimizations on a chip (pipelining, et cetera), and in a pure software engineering class you can learn about high-level abstraction (classes, namespaces, and libraries), but the piece in the middle is the compiler.
The only caveat I'll include is that I found particular benefit in studying compilers at the end of my grad school coursework, when I'd already studied "everything" else and moved on to project/thesis work. If you're planning to pursue a Master's or PhD, you might want to hold off. If you're going straight to work after graduation, then you should go armed with knowledge on compilers.