Why are the ciphertexts of Ansible Vault's AES256-encrypted files disproportionately composed of '3' and '6'?
Is this a peculiarity of the bytes of the underlying AES ciphertext, or of the way Ansible/Python represents the binary ciphertext as a digit string?

It's an artifact of how it represents a binary ciphertext.
What it does it first converts the binary into an ASCII representation of the hex, that is, converting it into the digits '0' through '9' and 'a' through 'f'.  Then, it converts each hex digit into its two digit hex representation, that is, the values '30' through '39' and '61' through '66'.
Back translating the first 16 characters of your quoted string:
6531333066306133

when converted back into ASCII, those are the 8 characters e130f0a3, which is the hex representation of the actual binary value.
As for why the character distribution you saw:

The character 3 is the first digit of 62.5% of the encoded bytes and is the second digit of 12.5% of the encoded bytes; hence it is expected to occur 37.5% of the time in aggregate

The character 6 is the first digit of 37.5% of the encoded bytes and is the second digit of 12.5% of the encoded bytes; hence it is expected to occur 25% of the time.

Any of the characters 1,2,4,5 is the second digit of 12.5% of the encoded bytes, hence it is expected to occur 6.25% of the time.

Any of the characters 0,7,8,9 is the second digit of 6.25% of the encoded bytes, hence they are expected to occur 3.125% of the time.


Those are roughly what you've seen (although the second example doesn't hold that close to these expected statistics; I'm not certain why that would be)