Why it is common practice to keep compile-time dependencies and runtime dependencies different? Why not to use same dependencies all the time? Even if you don't need some libraries when you compile your code - they'll just be ignored.
The obvious answer is to avoid collisions, if so how can they happen?