It seems component naming is no longer an issue with Rescript and Fast Refresh, but the Rescript compiler would re-compile all files and this triggers a hot reload for all files, including non component files which will always force a full reload with Fast Refresh.
UPDATE: Managed to fix the issue. Warnings (in this case unused variable warning) caused the Rescript file to be re-saved or something (triggering a React Refresh reload).