Well, the preprocessor is executed before any processing. So it does its job without knowing nothing about the underlying PlantUML syntax.
The skinparam line is then changed to :
skinparam shadowing <color:red>false</color>
which indeed does not remove shadowing.
So it works as designed although it could be an issue.
A possible workaround for skinparam could be to check "false" as substring instead of strict string. Would that help ?