Green threads sort of pretend to be threads, they aren't really the same thing. So the short answer is yes there is a fundamental limitation.
The largest performance difference is probably that real threads must have a larger startup cost, as they will need their own copies of some resources (like stack space) that green threads can share. There's not really a way around that without changing how you define a platform thread.