If you have sufficient coverage with 5 GHz, try disabling 2.4 GHz altogether and see if that helps. I've noticed some devices (particularly a Google Pixel 2) will fast-transition from 2.4 to 5 just fine, but not the reverse.
If you need 2.4 GHz support for other devices, try adding a 5-GHz-only SSID and using that for the iPhone instead. You may also consider introducing DAWN/usteer at this point.
Edit to add: I just re-read your post and saw that you mentioned 802.11k being enabled. Have you tried without that? And with it, have you added a package/daemon that will actually prompt/collect the neighbor reports and send them out to the clients. Stock OpenWRT won't do that on its own.
It is possible that some devices may see that 802.11k is enabled, wait for neighbor configuration from the AP, never receive it, and thus roam poorly. I don't have evidence of this in actual implementation (since most of them are closed-source), but it's why I suggested leaving that disabled without an accompanying neighbor report daemon.