I can't tell you why exactly, for I don't know the implementation details of these functions.

However, you can run this little test to see the speed difference (it's pretty obvious in this case):
Code:
#include <acknex.h>

void main()
{
    wait(1);
        
    while (1)
    {
        int i;
        var draw_line_time, draw_quad_time;
        
        timer();
        
        draw_line(NULLVECTOR, NULL, 100);
    
        for (i = 0; i < screen_size.y; i++)
        {
            draw_line(vector(0, i, 0), COLOR_WHITE, 100);
            draw_line(vector(screen_size.x, i, 0), COLOR_WHITE, 100);
        }
        
        draw_line_time = timer();
        
        draw_quad(NULL, NULLVECTOR, NULL, screen_size, NULL, COLOR_WHITE, 100, 0);
        
        draw_quad_time = timer();
        
        DEBUG_VAR(draw_line_time, 10);
        DEBUG_VAR(draw_quad_time, 30);
        
        wait (1);
    }
}