You have two different charactersets. The characters are automatically converted to the target characterset.
The number of bytes per character in both charactersets is different.
The varchar2 columns should have been set up as
description varchar2(30 char)
The default is BYTE
so other than a series of alter table modify statements there is no workaround and this 'problem' is self-inflicted.