La solución de tu tarea en 159 caracteres, si lo hago mas pequeño tal vez puedas twittearlo.
Código Python:
Ver originall="a b c d".split();n=len(l)-1;print '\n'.join([("["+''.join(["%s"%l[j]+(", " if (i>>j)&1 else "") for j in range(n)]+["%s"%l[-1]])+"]") for i in range(1<<n)])