It's very doubtful that the raw data in the table is being changed. Since some of your comments imply you are using tools and applications other than SQLPlus to look at and process the data, I think you need to look at whether they are mishandling the data in some way.
Here's an example where I tried to reproduce what you did in straight SQLPlus. No null bytes are appended to the existing data:
SQL> create table foo (bar varchar2(8));
Table created.
SQL> insert into foo
2 select lpad(to_char(level),level)
3 from dual
4 connect by level <=8;
8 rows created.
SQL> commit;
Commit complete.
SQL> select bar,dump(bar) from foo;
BAR
--------
DUMP(BAR)
--------------------------------------------------------------------------------
1
Typ=1 Len=1: 49
2
Typ=1 Len=2: 32,50
3
Typ=1 Len=3: 32,32,51
4
Typ=1 Len=4: 32,32,32,52
5
Typ=1 Len=5: 32,32,32,32,53
6
Typ=1 Len=6: 32,32,32,32,32,54
7
Typ=1 Len=7: 32,32,32,32,32,32,55
8
Typ=1 Len=8: 32,32,32,32,32,32,32,56
8 rows selected.
SQL> alter table foo modify (bar varchar2(16));
Table altered.
SQL> select bar,dump(bar) from foo;
BAR
----------------
DUMP(BAR)
--------------------------------------------------------------------------------
1
Typ=1 Len=1: 49
2
Typ=1 Len=2: 32,50
3
Typ=1 Len=3: 32,32,51
4
Typ=1 Len=4: 32,32,32,52
5
Typ=1 Len=5: 32,32,32,32,53
6
Typ=1 Len=6: 32,32,32,32,32,54
7
Typ=1 Len=7: 32,32,32,32,32,32,55
8
Typ=1 Len=8: 32,32,32,32,32,32,32,56