I discovered my array had a dodgy led. Assuming this was therefore the problem, I switched to another LED array I had.
I ran the same code as before and the issue still occurred.
If I put a delay of 1ms between each LED turning on/off, they light up normally and more importantly with equal brightness.
I think the issue might be to do with the amount of time the pins are turned on for. If I turn on pin 8, I need to set 3 pins high. To turn on pin 1, I don't need to turn on any pins so the amount of time that loop in my code lasts for will be less (because it doesnt have to run the "turn on" function 3 times)... Failings within my code, basically.
Will do some tests and let you know. Cheers for your messages. I appreciate your help.