Adding traffic via poproups is infinitely more reliable, as all you're doing is adding more data to select from during a process that the game is already doing. Traffic injectors like added traffic work in parallel to the existing traffic, and require additional resource to read and spawn the vehicle data when the script requests it. On highly strung machines or heavily modded games this can result in noticeable lag spikes as resources are directed towards the un-natural vehicle spawn.
Both methods can result in crashes if used incorrectly. The most common mistake (and one that I made myself for a while) is adding vehicles that do not have (or have unsuitable) LODs included. If you get multiple vehicles with no LODs spawn in game then you can get a memory overflow which will result in a (seemingly random) instant crash.