I'm actually on the fence with this one.
I do like the infinite TMs because they're convenient, and I don't have to worry about using them on accident. However, getting the same move on a party of six in 5 minutes doesn't seem like the way to go either. It feels like all of the Pokemon then have the same advantage, and in my opinion can make the game less challenging. :/ Now to think of it, yeah, I agree doing that limits coverage, but that's meta game-wise, isn't it?
This might sound like a difficult request to fulfill, but maybe make the players earn the TMs instead, without having the TMs to be infinite or "one-time only"? Like the below poster mentioned, most of the stronger TMs are found post-game, so I wouldn't worry about it making things overpowered during the main storyline, if that's what you mean.