Logix boolean arrays are really DWORD arrays, where each dword supplies 32 of the booleans. Drill in deeper. Your original boolean address of somebooltag[B]
translates to an OPC Item Path of somebooltag[J].K
where J=B/32 and K=B%32.
And no, this is not a bug. The logix processor really does tell a connected system that these are DWORDs. The only booleans that are actually reported as true booleans are stand-alone boolean tags (non-array). Even booleans within UDTs aren't "real" booleans, as they are hosted in some other integer type (hidden SINTs, typically).