Woocommerce textarea format ignored

The answer you’ve based your code off uses esc_attr() incorrectly on this line:

update_post_meta( $variation_id, 'my_text_field', esc_attr( $text_field ));

esc_attr() is for escaping a value so that it can be placed in an HTML attribute on output. This is a completely incorrect use of it, and it’s what is converting your < and > characters. Simply remove it to stop this happening:

update_post_meta( $variation_id, 'my_text_field', $text_field );

Just be aware that this allows anyone who can edit this product to add any HTML they’d like. If you want the textarea to respect the normal permissions rules regarding HTML tags in content, check the user’s permissions and remove disallowed tags with wp_kses_post() if they’re not allowed to add all tags:

if ( ! current_user_can( 'unfiltered_html' ) ) {
    $text_field = wp_kses_post( $text_field );
}

update_post_meta( $variation_id, 'my_text_field', $text_field );

That will ensure that HTML tags will work inside your textarea, but it won’t preserve line breaks. If you also want to preserve line breaks and paragraphs, the way the classic WordPress editor’s Text view does, then you need to pass the value through wpautop() on output:

echo wpautop( get_post_meta( $variation[ 'variation_id' ], 'my_text_field', true ) );