In a high-volume service business cost of cancellations can be included as part of cost of doing business, and built into the fees - ie. every customer pays 5% more for the 5% who do cancel. I understand this is probably not an attractive option for workshops due to low volume, and as another businessman I appreciate there are real costs involved even if they do manage to fill the spot. But having to forfeit 100% of the trip cost if I cancel 30 days in advance for any reason is entirely unacceptable to me, insurance or not - and those terms are not uncommon at least in several workshops held in Central America (ran mostly by Americans). I'll take (took) my money elsewhere.
I'd agree 100% would not only be unreasonable, but as you demonstrated a poor business model because negative feedback is never good for business.
As a business owner you need to look at what the law allows, your actual expenses if/if not able to fill the vacancy, and then decide your own personal business ethics within the limit of the law. Finally the contract and advertising must reflect all of this. Business owners often make bad decisions.
This is why "buyer beware" is so important. As a customer you need to look for these things and don't sign anything or submit fees you're not comfortable with. Or if you are uncomfortable with them buy insurance.
I think transparency is key. If you're 100% transparent it doesn't leave anyone much room to complain (though some will). Again, my personal policy is I don't keep a single baht if someone cancels. To me its much more rewarding to work long term repeat customers who are really learning.