the main idea is ease of integration. the developer doesn't have to write code to queue and dequeue, and the sys admin doesn't have to set up and support a queuing system. it's just a drop-in install.
regarding the impact on application performance, each of the libraries has a maxQueueSize feature which stops accepting messages into the internal queue if the flushing can't keep up. you can check out how maxQueueSize works in our docs: https://segment.io/docs