I would guess it is a trade-off between the heavier symbolic processing which is used by default and enables NIntegrate to handle complicated integrands that would be rather difficult to do with a purely numeric approach.
As documented, it is possible to use Method → {Automatic, “SymbolicProcessing” → False} which should give performance (and quality) similar to what V6 has.