The ports are designed to shut down when an over current situation is detected. It stands to reason that this circuit is reset at boot, so there could be damage to the sensor or damage / fault to the logic board or it could be a result of actual over current from whatever's connected.
Have you considered taking it in to a shop for a diagnosis?
Also, look in the Console app - all messages - and search for USB. You might be able to see the time when the over current (or other error condition is logged) since the system should notify the logging subsystem when a USB port gets shut down.