The algorithms themselves just output binary (i.e. bytes) if you read their specifications. It's the implementation in API's and applications that output the hexadecimals and/or Base64.
Sometimes there are also ad hoc standards / common practice that specifies a certain output format. This is for instance the case for the output of the bcrypt password hashing algorithm. In that case it's not just the hash that is displayed but also the type of algorithm, number of iterations and if course salt.
Base64 is more efficient than HEX, while HEX is easier for humans to digest. The length and bytes are just easier to see in HEX; the amount of stored bytes is for instance simply half of the displayed HEX digits. However for textual formats or indeed larger hash values Base64 may be chosen for its efficiency.
md5sum, sha1sum and their successors have always kept to outputting hex; it's to be expected that HEX is therefore more likely to be output by applications that want to remain compatible.