Because it's sometimes simpler not to, especially if you're planning to do more than just internal deployment.
You may end up dealing with multiple operating systems or package tools, for example, at which point Python's ubiquitous setup.py (and tools which work with it on every OS) look very attractive.
You may end up needing to install App A with Version 2.0 of Dependency B, and App C with Version 3.5, on the same server, at which point virtualenv starts looking really attractive.
These sorts of situations are extremely common in the real world, and "use the OS package tool" isn't a one-size-fits-all solution for them.
You may end up dealing with multiple operating systems or package tools, for example, at which point Python's ubiquitous setup.py (and tools which work with it on every OS) look very attractive.
You may end up needing to install App A with Version 2.0 of Dependency B, and App C with Version 3.5, on the same server, at which point virtualenv starts looking really attractive.
These sorts of situations are extremely common in the real world, and "use the OS package tool" isn't a one-size-fits-all solution for them.