The implication seems to be that units that are added via a package are not compiled as part of the project, rather the ppus of the package are used instead?
The compiler will simply use what it encounters first. It's
your task to ensure that there are no duplicates.
And any unit that is part of a package will be
compiled (by the IDE) as part of the package and then the compiler will use the
pre-compiled units of those packages. This also means that projects and packages must not share the same source directories as otherwise problems might arise here.
However; the compiler settings of the package(s) and the project can differ, which seems to contradict that.
What is the contradiction here? A package can simply be compiled with different settings than the project.