I dont know if it is an error or a feature. Add debugvardump (! in test environment)
Code:
<vb:if condition="$vboptions['codemaxlines']">
{vb:set verticalPadding, 12}
{vb:set horizScrollbarAllowance, 20}
{vb:set blockCssHeight, {vb:math {vb:raw blockheight} * {vb:stylevar bbcode_code_line_height} + {vb:raw verticalPadding} + {vb:raw horizScrollbarAllowance}}}
</vb:if>
<div class="bbcode_container">
<div class="bbcode_description">{vb:rawphrase code}:</div>
{vb:debugvardump $user}
<vb:if condition="is_member_of($user, 2, 3, 6)">
<pre class="bbcode_code"<vb:if condition="$vboptions['codemaxlines']"> style="height:{vb:raw blockCssHeight};"</vb:if>>{vb:raw code}</pre>
<vb:else />
{vb:rawphrase hide_code}
</vb:if>
</div>
Test in 5.5.3:
You get the vardump of the current logged in user (and also null info of not logged in) - and only then your bbcode_code makes sense
Test in fresh 5.6.0 with first post by admin and answer by registered user
In all situations (admin logged in, reg user logged in, no one logged in) I see in first post "admin-user-object" and in second post "reg-user-object".
So error in 5.6.0 or you have to use another object.