Many tools in MoveIt! use a RobotModelLoader create a moveit::core::RobotModel. In bio_ik a custom helper function is used. Unfortunately, this custom loader does not look at a joint_limits.yaml file (like the RobotModelLoader does). What this means is that if you have a URDF that defines one set of joint limits, and you use joint_limits.yaml file to set a different set of joint limits for the purposes of planning (a setup that is commonly used in MoveIt, including packages generated with the setup assistant). Then, when using bio_ik it's possible to get IK solutions (for example from robot_state::RobotState::setFromIK) that are outside of the motion planning limits defined by the joint_limits.yaml file, but inside of the limits defined in the URDF.