You can hide the delete buttons via code.
Adding this to your CSS script will always hide the delete button (just change collectionCSSClassName to the actual CSS Class Name of your collection):
.collectionCSSClassName .cf-collection-delete {display : none!important;}
Hiding it on just the read-only fields is a little trickier, but still very doable.
One way to do it is like this (this assumes that your Event Description field is a Single Line field - just change eventDescription to the actual CSS Class Name of the Event Description field in your collection).
Here's the CSS code:
.hiddenField {display : none!important;}
And here's the Javascript code:
$(document).on("onloadlookupfinished", function () {
$('.eventDescription input').each(function() {
if($(this).attr('readonly') == 'readonly') {
$(this).closest('ul').parent().find('.cf-collection-delete').addClass('hiddenField');
}
});
});
When the form has finished loading any lookups it cycles through all of the Event Description fields and if it is disabled, it hides the delete button for that collection row.
If your collection is pre-populated by a different task rather than by lookups, you should be able to swap out the first line of the Javascript with this instead:
$(document).ready(function () {
Good luck!