Extremely bloated transaction log during delete
So my question is, am I logging every delete from every index when deleting from the table?

Of course you are.  The log contains a record for every change to every page with sufficient detail to either redo or undo the change.

If so, is that normal behaviour or could the reason be because of missing clustered index?

Unrelated.  You're deleting 18 million rows from each of 17 seperate &quot;indexes&quot;, 16 nonclustred indexes and one heap.
And it's safer to disable/rebuild the non-clustered indexes than drop/create them because the index definitions are retained on the server.