After days of searching and trying I got it working now. Here are the steps I did (may be helpful for other users having the same issue):
In the past my platformIO installation was configured to use the built-in python interpreter, located at ./.platformio/python3/bin/python3.
As mentioned before, the MacOS firewall was blocking the TCP connection when trying to upload to the ESP device. I could see this also when I tried to upload the firmware just with the following command:
./.platformio/python3/bin/python3 espota.py -d -i 192.168.1.234 -f firmware.bin
(no upload possible)
Then I tried the same but using a seperate python3 on the system:
/usr/local/bin/python3 espota.py -d -i 192.168.1.234 -f firmware.bin
(upload successful)
In both cases I added an entry for both python versions in the firewall configuration (firewall->options), but I assume that for the built-in python3 (./.platformio/python3/bin/python3) the firewall did not consider the related entry in the options and therefore blocked the connection anyway.
In the last step I selected the seperate python interpreter (/usr/local/bin/python3) within platformIO (“View->Command palette”).
BTW, since Sequoia 15.0 there seems to be some issues with the firewall. This seems to be the case even for 15.2: when I tried to delete apps from the options list, clicking “OK” and opened the option list again, all deleted apps were in the list again. There are several discussions in the net regarding these issues.