This is made on Timber theme but will work on all themes.
Each product variant have an ID assigned. You can see the available variants and IDs by looking at the product object:

console.log({{ product | json }})

When you edit the product description, go into "Show HTML" mode. You need to create some panels. Each panel should contain the ID and description of that variant:

<p class="description" id="7397573253">Description for variant 1</p>
<p class="description" id="7397573317" style="display: none;">Description for variant 2</p>
<p class="description" id="7397573381" style="display: none;">Description for variant 3</p>

Where:
    id is the variant ID
    style="display: none" tells the browser not to show that description
    class="description" its a hook we need to use for the callback
Having this done in the description you need to edit the product.liquid (or wherever your variant change is) and add this:

// selectCallback is the callback name in Timber
var selectCallback = function(variant, selector) {
// Simply toggle on/off the panel according to the variant selected
$('.description').css('display', 'none');
$('#' + variant.id).css('display', 'block');
// rest of the Timber code