I've figured this out. Instead of having a separate tree with expanded walls (planes) you can add hitbox size to plane distance when traversing BSP tree itself:
return Vector3.Dot(node.plane.normal, position) + (node.plane.distance + hullSize) < 0 ? IsPointInNode(position, node.frontChild) : IsPointInNode(position, node.backChild);
And if your hitbox has different sizes on different dimensions you can just multiply plane normal by hitbox size:
float hullSize = Math.Abs(node.plane.normal.X * size.X) +
Math.Abs(node.plane.normal.Y * size.Y) +
Math.Abs(node.plane.normal.Z * size.Z);