все очень просто - если тулкит кроссплатформенный, то встает проблема с различной реализацией графической системы в win, lin, mac etc., а так тулкит перенимает на себя часть обязанностей по организации Z-буфера, иерархии виджетов, отрисовке и распределению сообщений, что позволяет писать один код для всех платформ; а что будет, если так не делать, можно посмотреть на примере wxWidgets - тысячи багов, специфичных для разных платформ