The problem is that the left square bracket is a special character in regular expressions. "grep" is not just a string match. Regular expressions are an involved language that allows you to describe text patterns. Grep tries to interpret it [[[[as a regular expression, not just a string.
As your question indicates, you can avoid special characters with backslashes. So the following may work:
./prog | grep '\[\[\[\['
You can also “avoid” square brackets by placing them in square brackets. This way, [[][[][[][[]or [[]{4}if your version of grep processes it.
, ./prog " " " ". stderr :
./proc 2>&1 | egrep '[[]{4}'
UPDATE:
[ghoti@pc ~]$ printf '[[[[\n[[[\n[[[[\n[[[[[\n[[\n' | grep '\[\[\[\['
[[[[
[[[[
[[[[[
[ghoti@pc ~]$ printf '[[[[\n[[[\n[[[[\n[[[[[\n[[\n' | egrep '[[]{4}'
[[[[
[[[[
[[[[[
[ghoti@pc ~]$
, . , , .