Why does module_invoke() return an empty array for anonymous users?
You are invoking the function bean_block_view(), which contains this code:

if (bean_access('view', $bean) &amp;&amp; $bean) {
  $content = $bean-&gt;view($bean-&gt;view_mode);
  if (!is_array($content)) {
    $content = array(
      '#markup' =&gt; $content,
    );
  }

  $return = array(
    'content' =&gt; $content, 
    'subject' =&gt; isset($bean-&gt;title) ? $bean-&gt;title : '',
  );
}


Looking at the first line of code, you can see the block is only built if the viewer has 'view' access for beans.

So it's a permissions issue of some sort with the beans module. Anonymous users don't have the required permission, so the block is empty.