For the USPS issue with php 5.4.30+ (pretty sure that is the version is started with), make the following changes to the usps shipping module:
/includes/modules/shipping/usps.php

around line 397:
Code:
            if (isset($Package['SpecialServices']['SpecialService']['ServiceName']) && !isset($Package['SpecialServices']['SpecialService'][0])) {
//              $Package['SpecialServices']['SpecialService'][] = $Package['SpecialServices']['SpecialService'];
              $Package['SpecialServices']['SpecialService'] = array($Package['SpecialServices']['SpecialService']);
            }
and around line 434:
Code:
            if (isset($Package['ExtraServices']['ExtraService']['ServiceName']) && !isset($Package['ExtraServices']['ExtraService'][0])) {
//              $Package['ExtraServices']['ExtraService'][] = $Package['ExtraServices']['ExtraService'];
              $Package['ExtraServices']['ExtraService'] = array($Package['ExtraServices']['ExtraService']);
            }
See if that corrects the USPS issue ...

This "fix" would be compatible with all PHP 5.x versions.

Be sure to test both Domestic and International shipping ...