Все упирается в то, что в D обчные указатели имеют тот же тип что и GC-указатели. Компилятор просто не знает нужно ли ему пихать write barrier или нет.
Надо признать что boehm (консервативный) GC не всегда делает программу медленнее. На форуме Nim встречались топики где народ тестировал разные типы GC. И достаточно нередко консервативный GC побивал всякие ARC и mark-and-sweep GC.
Дмитрий описал еще и инкрементальную технику, а также технику когда GC делит объекты на "старые" и "молодые". "Молодые" проверяются чаще, чем "старые".