Sulfur makes a covalent bond with oxygen and sulfur can make up to 6 bonds. That is the case for SO3 (sulfur trioxide).
In SO4, which has a -2 charge, the -2 charge can't exist on a single oxygen. If it did, then SO4(-2) would break down to SO3 and O(-2).
The charge is spread over 2 oxygen atoms.
I'm sure an even deeper explanation is possible by looking at the orbitals.