Using generator for buffered read of large file in Python
You called it unbuffered, but these lines:

with open(infile) as f:
    lines = f.readlines()
    f.close()


slurp the entire file into memory, while your 'buffered' version only pulls in a line at a time, returning chunks.

I note that you're not doing anything with the entire chunk, just the lines starting with 'productNumber:', so I think a rework of your 'unbuffered' code will actually be fastest, as well as clearest:

def get_products_unbuffered(infile):
    products = []
    with open(infile) as f:
        for line in f:
            if line.startswith('productNumber:'):
                 productNumber = line[len('productNumber:'):].strip().rstrip(';').strip('"')
                 products.append(productNumber)
    return products


as this will read the file a line at a time and only keep desired info (productNumbers) in memory..