Well, as you say, LOOKUP() needs a sorted search vector. Without it, the return value is not predictable. Behavior with unsorted search vector is undefined. Or as the help pages say: “… will not return any usable results.”
A bug means “does not work as specified”, but LOOKUP() is not specified to work with given data, so I’d say it is not a bug. Unexpected, yes, but not a bug.
When source and search vectors are both calculated, they exist “off the grid” as it were. I guess that they reside in temporary work area for the duration of formula evaluation. When matching the value to the unsorted search vector, result is picked “off off the grid”, which in some cases may happen to be inside the grid again, or a different grid, or the holodeck of Starship Enterprise. We cannot tell. It is undefined.