interesting question. I will try to keep it short and simple. In other words, could you elaborate without the libraries ? Maybe...
Cells can also be instantiated. In fact, macros (memories, PLL, etc.) can only be instantiated. If those cells were missing then you would get linking errors and all sorts of other side effects. Would it be possible to have a mode of operation where RTL with only inferable cells is read in and no libraries are required? Sure. However, most practical designs will have macros, etc. and will later be mapped to a library anyhow so most tools choose to enforce this requirement early on in the flow to avoid issue later on. Why did you want to do that ?
hope this helps,