The average software engineer does not need to remember compiler design, digital logic, esoteric datastructures etc to do their job well. If people are forgetting "fundementals" (of which I would not classify specialised subjects such as compiler design), then it's because they don't need it for the job they're doing.
Although I do agree that Computer Science theory is definitely important and knowing it is better than not. Sometimes a project your working on would benefit from knowledge of datastructures, cache locality, etc, and that makes the years of academia worth it.