I still don't know "why" even after reading this. The highlighted block of C doesn't tell me anything and neither does the comment on it. As far as I can tell, this is just a benchmark with no explanation.
VM_METHOD_TYPE_ATTRSET and VM_METHOD_TYPE_IVAR are the reason attr_accessor is significantly faster than a normal method created with def. These are implemented as pure C functions without creating a new Ruby stack frame, or executing compiled Instruction Sequences inside the VM."
I'll take a wild stab at why setting/getting `b` is slower. The author of the code has just inserted another call layer by manually defining the getter and setter in Ruby.