This one's easy. Under -analyzer-config c++-allocator-inlining=true, since D41406, we've teached MallocChecker to use the new callback, check::NewAllocator, which fires between the end of the operator new() call and the beginning of the constructor call. Because the constructor call causes a pointer escape event, during which the pointer returned by operator new() immediately escapes, MallocChecker immediately loses track of the allocated symbol and becomes completely useless. In particular, NewDeleteLeaks suffers a lot.
I'm open to suggestions regarding whether we should suppress this sort of pointer escape on the checker side or globally.