Why can't I shrink my logfile below to the requested value?
According to this documentation (Section:How Does Shrinking the Log File Work?):


  When any file is shrunk, the space freed must come from the end of the
  file. When a transaction log file is shrunk, enough virtual log files
  from the end of the log file are freed to reduce the log to the size
  requested by the user. The target_size specified by the user is
  rounded to the next highest virtual log file boundary.


You have 1GB and 2GB log files which equate to 8 and 16 vlf's of 131,072.  You said shrink to 512MB (524,288kb).  Since that is on a VLF boundary, it gets rounded up to the next highest VLF boundary (add 131,072) which would be (655,360kb) which is fairly close to the disk space allocation you're seeing.