Tested with Reaper v6.77, lua (did not check C or EEL API)
According to API doc SetMediaTrackInfo_Value should react to parameter name "I_FREEMODE" just like GetMediaTrackInfo_Value does (the latter works properly).
However, SetMediaTrackInfo_Value only reacts to the deprecated "B_FREEMODE" parameter name. Ironically it expects a double / number / float, not a boolean.
The deprecated GetSetMediaTrackInfo which used "B_FREEMODE" did expect a boolean value and I assume it probably still works for legacy reasons (I hope but haven't tested).
=> most likely this is just a trivial error when SetMediaTrackInfo_Value and GetMediaTrackInfo_Value were introduced. SetMediaTrackInfo_Value already works with the numbered logic including the upcoming track lanes feature but the parameter string seemingly was not updated to "I_FREEMODE" and got "B_FREEMODE" instead.
Code:
-- this works to unset Free Item Positioning
reaper.SetMediaTrackInfo_Value(track, "B_FREEMODE", 0)
-- this do not work (but should be the correct way)
reaper.SetMediaTrackInfo_Value(track, "I_FREEMODE", 0)
--these do not work either (just to test nature of bug :-)
reaper.SetMediaTrackInfo_Value(track, "I_FREEMODE", false)
reaper.SetMediaTrackInfo_Value(track, "B_FREEMODE", false)