According to the Android 12 documentation an app can invoke bluetooth admin and scan and specifically opt out of derived location settings (not just rough or precise but by flag).
In Graphene I've observed:
If android.permission.ACCESS_FINE_LOCATION and android.permission.ACCESS_COURSE_LOCATION are not requested AND <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation" /> is specified
Then location course/fine is still asked at runtime if android.permission.BLUETOOTH_SCAN is specified.
And also BLE scanning will fail to start unless 'Nearby decides permission' is included manually in the Android settings for the App. I believe this is 'NEARBY_WIFI_DEVICES', which has nothing to do with BLE but is required anyway.