TBH, IPSec endpoints are really uncommon. And, since it's a tunneling technology, you'll be needing two tunnel endpoints; one on your IoT device and the other in your cloud server where you'll be sending the data.
Hence, I'd recommend you go with TLS. Now, I'm not entirely sure how much ROM a TLS implementation would need, but you should be able to decrease the size by compiling the TLS library yourself. TLS libraries are generally large because they support 4 SSL/TLS versions and dozens of ciphers. So, if you disable all the unused modes (SSL, TLSv1, TLSv1.1) and ciphers that your cloud service supports, and just keep TLSv1.2 along with one or two ciphers, you should be able to solve your limited ROM problem by adapting them in your TLS library accordingly.