Setup overhead seems to be higher. Here are some times in seconds for 2**25 / n times summing [1] * n with three methods (so for every n and thus every row, the total number of summed numbers is the same, namely 2**25). Note how all three start slow and loop starts fastest. No idea why loop, after going below 2.0, goes up to 2.8 (edit: Maybe Python's small integers cache makes sums below 257 faster, but the other two solutions don't seem to suffer from that).
       n   loop   generator  pure
-----------------------------------
       1  11.3239  24.6003  12.5587
       2   6.8343  13.6080   5.6892
       4   4.4053   7.9283   3.0991
       8   3.2007   5.5467   1.8115
      16   2.5485   3.7965   1.1166
      32   2.2361   3.0682   0.7247
      64   2.0101   3.0527   0.5513
     128   2.0220   2.4149   0.4475
     256   1.8081   2.3848   0.3966
     512   2.0703   2.3418   0.4229
    1024   2.2276   2.2966   0.3706
    2048   2.2751   2.2856   0.3614
    4096   2.2761   2.3269   0.3533
    8192   2.3085   2.3623   0.3671
   16384   2.3395   2.2970   0.3552
   32768   2.4804   2.3583   0.4097
   65536   2.5998   2.3151   0.3572
  131072   2.7952   2.2654   0.3954
  262144   2.7445   2.4830   0.3599
  524288   2.7740   2.3462   0.3565
 1048576   2.7449   2.2845   0.3592
 2097152   2.8187   2.2246   0.3708
 4194304   2.8307   2.2691   0.3572
 8388608   2.8036   2.2731   0.3690
16777216   2.7704   2.3388   0.3649
33554432   2.8328   2.3018   0.3545
You have n ≤ 6, so my test agrees that generator is slower there. In my case it's more extreme, presumably because I'm not doing anything else like converting numbers to strings and looking up list indexes and summing large numbers.
Code:
from timeit import timeit
def sum_loop(numbers):
    total = 0
    for number in numbers:
        total += number
    return total
def sum_generator(numbers):
    return sum(number for number in numbers)
def sum_pure(numbers):
    return sum(numbers)
emax = 25
for e in range(emax + 1):
    n = 2**e
    number = 2**(emax - e)
    numbers = [1] * n
    print('%8d' % n, end='')
    for f in sum_loop, sum_generator, sum_pure:
        t = timeit(lambda: f(numbers), number=number)
        print('  %7.4f' % t, end='')
    print()