When I started to use GD, I avoided extensions because I wanted to learn how to do it myself. It’s good to learn the basics, the fundamentals. Once I learned the basics, I weighed the benefits of using an extension versus using my own events. Sometimes, you might only need 1 function and it doesn’t make sense to add an entire extension.
Popular extensions like Array Tools are maintained and updated. Although, it’s still a community made extension which means there are no guarantees about its future support or features. Although, a useful extension like this has a high probability of having someone maintain it if the original creator(s) were no longer willing or able to.
Extensions, even built-in ones, are nice because they can keep the event sheet less cluttered and make it possible to use the same events in multiple locations instead of copying an entire event group multiple times. Why use the same 10 events in 5 locations when you can just use a single function 5 times to call the 10 events inside a function.
Now, that doesn’t explain why GD doesn’t have more built-in array tools or the Array Tools extension itself. I think it’s because arrays are more advanced and less of a priority to the developers especially when there’s already an excellent community made extension. I’m hopeful that eventually more array tools features will be built into GD. Arrays and variables as a whole are more of a mystery to a lot of people because they’re not as “no code” as most events. They require more handling not just a click or two.
To incorporate the Array Tools extension into GD would require a lot of work but I’m hopeful that it will eventually happen.
As for doing everything yourself. It’s completely doable but some functions would require either a lot of events or the use of Javascript. One of the biggest challenges would be sorting text. GD doesn’t have comparison condition for text like for numbers. You can’t use greater or less than for text. So, you couldn’t create even a simple Bubble Sort routine.
There are multiple ways of picking random, non-repeating items. I prefer using Array Tools shuffle. Once an array is shuffled you can just cycle through the list with a counter variable.
Now, you could also use

The downside of this is that if you wanted to reuse the list then you would need to recreate the list or use a copy. Also, removing random items is slightly less efficient than just taking or Popping the last item. Think of it like a stack of pizza boxes. It’s easier to take the last box than 1 in the middle. If you take a box from the center than all the other ones need to drop to take it’s place. The 6th becomes the 5th, the 7th thr 6th and so on.
Learn the fundamentals but make your own judgment as when to use an extension. You might know how to change your car’s oil or make a cup of coffee but sometimes it’s easier to have someone else do it for you.