The collision detection between sprites is completely different than the collision detection between a sprite and a tile. So that's why you're observing that difference.
I was quite suspicious at the belief that it behaved differently when moving from left to right than it did from right to left. So I tried it myself, and you are indeed correct. There is still a problem moving from right to left, but it's not as severe as when moving from left to right in a game where there's gravity because the code apparently forces the player to go "uphill" when you're moving from left to right when straddling a solid, but not when you're going from right to left. The complexity of the function that handles interactions between sprites and tile solidity has evolved beyond my ability to maintain it over the decade that I've been working on it (this piece of code evolved from code that existed long before the kit itself), but I noticed that it wasn't symmetric. When I added the symmetry I was able to at least get it to behave the same going from left to right as it does from right to left. Unfortunately, I don't know if code modifications are going to help you at this point unless you want to compile your own GDPlay for your project. In case you do want to do that, I will describe the fix:
In the Sprite.cls file there is a function called "ReactToSolid". In there is a block of code that begins with "Do While (DX > 0) And _". Inside that block of code you will find code similar to what I've shown below. But the code below has some modifications to make it symmetrical so that moving left to right will work the same way moving right to left does.
' Check uphill (rightward) stuff
If rDef.SolidTest(X + DX + W - 1, Y + H - 1.5 + DY) And _
(Not rDef.SolidTest(X + DX + W - 1, Y + H - 1.5 - DX)) And _
(Not rDef.SolidTest(X + DX + W - 1, Y - DX)) And _
(Not rDef.SolidTest(X + DX, Y - DX)) Then
DY = -DX - 0.5
Exit Do
' Check down-ceiling (rightward) stuff
ElseIf rDef.SolidTest(X + DX + W - 1, Y + DY) And _
(Not rDef.SolidTest(X + DX + W - 1, Y + H - 1 + DX)) And _
(Not rDef.SolidTest(X + DX + W - 1, Y + DX)) And _
(Not rDef.SolidTest(X + DX, Y + H - 1 + DX)) Then
DY = DX
Exit Do
Else
DX = DX - 1
If DX < 0 Then DX = 0: Exit Do
End If
The other option is to try to correct the problem from script by adding your own logic on top of what's already happening by using ProjectObj.GamePlayer.PlayerSprite.rDef.SolidTest on various points around the edge of the sprite, and manipulating the player sprite's DX, DY, X, and Y properties appropriately.