There's lots of reasons for this.
Spotify is $9.99/month. Average listener streams 25 hours of content [1], and the average song length is 3.5 minutes [2] -- this means most people pay about $0.023 per song.
For one thing, by charging per song you now force someone to make evaluations of their use. I'd be much less likely to just leave music streaming in the background (which I sometimes do) -- even if I walk out of the room -- if I have to think about that constantly increasing bill. You could also get into runaway costs, if it was accidentally left on (but muted) overnight or longer, for example.
I can't find data on it, but I'd bet there's a long tail of users who stream significantly fewer songs, and a small handful of users that stream significantly more. Spotify makes a lot of money on that long tail due to low usage.. why would they sacrifice that? Alternatively they could jack up their price-per-song, but that would dissuade all but the lowest-usage users.
And honestly as user, I don't want the cognitive overhead of thinking about this.